我有一张看起来像这样的桌子
ID RefernceID Field1 Field2 Field3
-- ---------- ------ -------- -------
1 A01 Cat NULL Dog
2 A01 Cat Fish NULL
3 A02 Banana Apple NULL
4 A02 Banana NULL Mango
我正试图得到这个
ID RefernceID Field1 Field2 Field3
-- ---------- ------ -------- -------
1 A01 Cat Fish Dog
3 A02 Banana Apple Mango
因此,基本上行由ReferenceID
和Field 1
分组,然后我希望它们合并并替换为NULL。
任何帮助将不胜感激。
编辑:抱歉,忘记添加其他列了(我只是没有提到,我仍然需要ID
值之一。
答案 0 :(得分:0)
一个巧妙的技巧是使用max
或min
,而忽略null
。因此,如果只有一个非null
值,则max
将返回它。由于您只需要id
之一,因此可以随意使用min
,它将返回问题中显示的结果:
SELECT MIN(id), referenceid, field1, MAX(field2), MAX(field3)
FROM mytable
GROUP BY referenceid, field1
答案 1 :(得分:0)
您要聚合:
select referenceid, field1, max(field2), max(field3)
from table t
group by referenceid, field1;
答案 2 :(得分:0)
您可以将简单的聚合(max
)用作:
select RefernceID,
min(ID) as ID,
max(field1) as field1,
max(field2) as field2,
max(field3) as field3
from tab
group by RefernceID