这个问题在标题中有点难以解释:
我有下表:
ColA | ColB | ColC
-----|------|------
1 |1 |2
1 |1 |3
1 |2 |null
1 |2 |5
1 |2 |6
1 |3 |null
我需要以下结果表:
ColA | ColB | ColC
-----|------|------
1 |1 |2
1 |1 |3
1 |2 |5
1 |2 |6
1 |3 |null
规则如下:
这对(colb,colc)应该是唯一的。
如果一对(colb,colc)与colc!=null,则应过滤掉colc=null的任何其他对(colb,colc)。
如果colc不存在对(colb,colc)=null,但是存在colc=null的对(colb,colc),那么表中应该出现colc=null的单个对(colb,colc)。
在示例表中,第三行由于第四行而被过滤掉。第五行没有被过滤掉,因为没有其他行具有colb=3和colc!=无效的。
1条答案
按热度按时间rqenqsqc1#
使用分析函数:
演示
别名数量
cnt
是非NULL
ColC
每个a-b组的值。这个WHERE
条款规定保留所有严格不符合要求的记录NULL
,应该ColC
至少有一个非NULL
值,或保留所有记录,仅在NULL
出现在ColC
.