将一列中的重复结果合并为一行 - 同时还删除所有其他列中的空值

时间:2018-04-13 00:15:11

标签: sql sql-server group-by

我创建的脚本的结果包含一些信息,我希望将这些信息合并为每个唯一ID的单行。

结果示例。

ID|File1|File2|File3|File4
1 |1.txt|NULL |3.txt|4.txt
1 |NULL |2.txt|NULL |4.txt
2 |NULL |2.txt|NULL |4.txt
2 |1.txt|NULL |3.txt|4.txt

我正在尝试编写上表的脚本以包含唯一ID,同时删除所有NULL值。

我想要达到的结果如下。

ID|File1|File2|File3|File4 
1 |1.txt|2.txt|3.txt|4.txt 
2 |1.txt|2.txt|3.txt|4.txt

我需要基本上将文件1,2,3和4分组为它们所属的唯一ID,同时还删除任何空值。

我没有想法,老实说,我不知道用来描述我的问题的最佳词汇,以便谷歌撤回一些匹配的结果。

如果所有其他方法都失败了,我总是可以将结果粘贴到excel中并使用Vlookup来获取我的结果,但我正在尝试编写我需要的结果。

提前致谢

1 个答案:

答案 0 :(得分:3)

带有MAX()的GROUP BY ID将完成工作

SELECT  ID, max(file1), max(file2), max(file3), max(file4)
FROM    table
GROUP BY ID