我有一个说100行的SQL表。 结构就像
colectiveNo colectiveName p1Number P1EffectiveFromDate morecol
--------------------------------------------------------------------------------------
1 name1 somenumber somedate NULL
1 name1 somenumber somedate 1234
1 name1 somenumber somedate 5432
我们分组,由colectiveNo
我想像这样使用条件:
如果来自“morcol”的组中的行为null 同一组中的行与morcol有一些数字 不要用null显示行 显示第2,3行
ELSE 如果我只有更多行的行,则为null显示该组
colectiveNo colectiveName p1Number P1EffectiveFromDate morecol
----------------------------------------------------------------------------------
1 name1 somenumber somedate NULL
1 name1 somenumber somedate NULL
1 name1 somenumber somedate NULL
显示第1,2,3行
我很难做到这一点请帮助
答案 0 :(得分:0)
这是你可以做到的一种方式,你说你在colectiveNo上分组,所以我假设你的第二个例子充满了nulls是一个不同的colectiveNo
SELECT *
FROM
(
SELECT colectiveNo
,colectiveName
,p1Number
,p1EffectiveFromDate
,morecol
,CASE WHEN MAX(morecol) OVER (PARTITION BY colectiveNo) IS NULL THEN 1 ELSE 0 END AS fldIncNulls
FROM tbltest
)data
WHERE (morecol IS NOT NULL OR fldIncNulls = 1)