我有一个表,其中包含与名称配对的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编写执行此操作的查询?
答案 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
将具有一个值。