具有相同ID但值不同的SQL合并列

时间:2018-09-05 02:42:50

标签: sql

我有一个表,其中包含与名称配对的ID:

ID | Name  
3    Cole
4    Mart
4    Dino
7    Pitta
7    Leo
7    Mina
8    Bob

有一个具有相同ID的用户。我正在寻找的输出是:

ID | Name  
3    Cole
4    Mart
null Dino
7    Pitta
null Leo
null Mina
8    Bob

具有相同ID的条目将显示一次,而其余所有共享相同ID的条目将列出null。

是否可以使用SQL编写执行此操作的查询?

1 个答案:

答案 0 :(得分:1)

SQL表表示无序集。因此,在多个具有相同值的行中没有 first 行。

您可以将行中的一个设置为NULL,但不能确定哪个。为此,请使用row_number()

select (case when row_number() over (partition by id order by ?) = 1
             then id
        end) as id, name
from t
order by id, ?;

?用于指定顺序的列,因此组中的“第一个”将具有一个值,其余NULL将具有一个值。