我有一张桌子如下图所示 -
F1 F2 F3 F4
A AB NA NA
A NA BC NA
A NA NA CD
B UV NA NA
B NA WX NA
B NA NA YZ
C ABC NA NA
C NA BCD NA
C NA NA XYZ
我需要按列F1进行分组,并选择不等于' NA'的连续列的值。
F1 F2 F3 F4
A AB BC CD
B UV WX YZ
C ABC BCD XYZ
我正在使用以下代码,但它无法正常工作。
SELECT F1
,MAX(ISNULL(F2 ,'')) as F2
,MAX(ISNULL(F3 ,'')) as F3
,MAX(ISNULL(F4 ,'')) as F4
FROM test
group by F1;
请帮忙。
答案 0 :(得分:2)
试试这个:
SELECT F1
,MAX(ISNULL(NULLIF(F2, 'NA') ,'')) as F2
,MAX(ISNULL(NULLIF(F3, 'NA') ,'')) as F3
,MAX(ISNULL(NULLIF(F4, 'NA') ,'')) as F4
FROM test
group by F1;
请注意,如果第一个参数的值与第二个参数的值相同,则NULLIF将返回NULL。
答案 1 :(得分:0)
选择F1, MAX(F2 =' NA'然后''' ELSE F2 END)作为F2 MAX(F3 =' NA'然后'' ELSE F3结束)作为F2的情况 MAX(F4 =' NA'然后'' ELSE F4 END)作为F2的情况 从测试 GROUP BY F1;