gpt4 book ai didi

sql - 需要查明 S​​QL Server 表中的所有列是否具有相同的值

转载 作者:行者123 更新时间:2023-12-04 20:56:09 25 4
gpt4 key购买 nike

我的任务是查明 SQL Server 表中的所有列是否具有完全相同的值。表内容由存储过程创建,列数可能不同。第一列是一个 ID,如果所有列的值完全相同,则必须比较第二列和后面的列。

目前我不知道如何实现这一目标。

最好的解决方案是只显示行,这些行在一个或多个列中具有不同的值,除了带有 ID 的第一列。

非常感谢您的帮助!

--> 编辑:表格看起来是这样的:

ID   Instance1     Instance2     Instance3      Instance4      Instance5
=====================================================
A 1 1 1 1 1
B 1 1 0 1 1
C 55 55 55 55 55
D Driver Driver Driver Co-driver Driver
E 90 0 90 0 50
F On On On On On

结果应该如下所示,只显示具有一个或多个不同列值的行。

ID   Instance1     Instance2     Instance3      Instance4      Instance5
=====================================================
B 1 1 0 1 1
D Driver Driver Driver Co-driver Driver
E 90 0 90 0 50

我的表有 1000 多行和 40 列

最佳答案

你可以通过使用 row_number() 来实现试试下面的代码

With c as(
Select id
,field_1
,field_2
,field_3
,field_n
,row_number() over(partition by field_1,field_2,field_3,field_n order by id asc) as rn
From Table
)
Select *
From c
Where rn = 1

带分区的 row_number 将通过根据 field_1、field_2、field_3、field_n 为行分配一个数字来向您显示该字段是否重复,例如,如果您有 2 行具有相同的字段值,则内部查询将给你看

rn field_1 field_2 field_3 field_n id 
1 x y z a 5
2 x y z a 9

之后,在查询的外部选择 rn = 1,您将获得一个没有基于字段重复的查询。

此外,如果您想从表格中删除重复的数字,您可以申请

  With c as(
Select id
,field_1
,field_2
,field_3
,field_n
,row_number() over(partition by field_1,field_2,field_3,field_n order by id asc) as rn
From Table
)
delete
From c
Where rn > 1

关于sql - 需要查明 S​​QL Server 表中的所有列是否具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54048282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com