首页 > 解决方案 > SQL合并具有相同ID但不同值的列

问题描述

我有一个表,其中包含与名称配对的 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 的剩余条目将列为空。

有没有办法使用 SQL 编写执行此操作的查询?

标签: sql

解决方案


SQL 表表示无序集。因此,在具有相同值的几个中,没有第一行这样的东西。

您可以将其中一行设置为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


推荐阅读