ID相同但值不同的SQL合并列
我有一个表,其中包含ID和名称:ID相同但值不同的SQL合并列,sql,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 是否有一种方法可以使
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编写执行此操作的查询?SQL表表示无序集。因此,在几个具有相同值的行中不存在第一行这样的事情
您可以将其中一行设置为NULL,但无法确定是哪一行。为此,请使用行号:
??用于指定排序的列,因此组中的第一个将有一个值,其余为NULL。将ID保留/更改为NULL的逻辑是什么?哪个记录的id将为空,哪个记录的id将被保留?例如,你为什么留下玛特而不是迪诺?你想要名字的最大值还是只保留随机记录?您的RDBMS是什么?您是只想输出SELECT语句还是想更新记录?更新语句。你需要解释你为什么选择迪诺,而不是玛特。请记住,表中没有“顺序”-您需要按键进行顺序。我想要的是保留dino、leo、mina的数据。但正如您所看到的,ID将显示为null。ID已经在那里了。你想在你的逻辑中硬编码迪诺,利奥,米娜?我不这么认为。你需要解释为什么你选择恐龙而不是玛特。但是数据的顺序不能构成此逻辑的一部分,除非有一个实际的列是按顺序排列的。例如:选择按字母顺序排列的姓氏以保留,并将其他名称设为空。可以接受吗?
select (case when row_number() over (partition by id order by ?) = 1
then id
end) as id, name
from t
order by id, ?;