sql - 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 表表示无序集。因此,在具有相同值的几个中,没有第一行这样的东西。
您可以将其中一行设置为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
。
推荐阅读
- javascript - Redux Saga EventChannel: TypeError: (0, _reduxSaga.take) 不是函数
- android - Android:文本超过一行的TextView不可点击/长点击
- typescript - TypeScript:对象作为类属性(非静态或静态)
- django - 我在 /admin/login/ 处不断收到 RelatedObjectDoesNotExist。如何通过一对一关系在 Django 中成功创建用户配置文件?
- bootstrap-4 - 如何在 bundle.js 中使用元名称?
- python - Python 格式整数
- java - .getResource 在资源文件夹中找不到文件
- ios - iOS 8 - 当应用程序不活动时显示来电(没有 CallKit)
- php - 有没有办法让这些查询更短?
- ruby - 方法级联在这里是可能的吗?