Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ID相同但值不同的SQL合并列_Sql - Fatal编程技术网

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

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和名称:

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, ?;