Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/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
Sql server 如何识别SQL Server中哪些列具有不同的值_Sql Server_Tsql - Fatal编程技术网

Sql server 如何识别SQL Server中哪些列具有不同的值

Sql server 如何识别SQL Server中哪些列具有不同的值,sql-server,tsql,Sql Server,Tsql,我有一个超过100列的表,在正常情况下,contract\u id在这个表中应该是唯一的,但有时会有重复的值。我使用此SQL语句从此表中检索数据: select distinct contract_id, col1, col2,...colM from the_table; 但是我发现了contract\u id值,我知道在同一列中应该有一些值是不同的,我能不能找到一种方法来找出所有这些具有不同值的列导致我看到重复的contract\u id,即使我使用了distinct,因为有很多字段,只

我有一个超过100列的表,在正常情况下,
contract\u id
在这个表中应该是唯一的,但有时会有重复的值。我使用此SQL语句从此表中检索数据:

select distinct contract_id, col1, col2,...colM 
from the_table;
但是我发现了
contract\u id
值,我知道在同一列中应该有一些值是不同的,我能不能找到一种方法来找出所有这些具有不同值的列导致我看到重复的
contract\u id
,即使我使用了distinct,因为有很多字段,只有少数列具有不同的值。手动逐个比较每一列是很困难的。

试试看

SELECT contract_id 
FROM the_table 
GROUP BY contract_id 
HAVING COUNT(contract_id)>1;

第一个将向您显示所有
合同id
值,这些值至少出现两次,第二个将向您显示所有可能要操作的行(删除/更改)

注意:我在
OVER()
子句的
顺序中使用了
选择NULL
。在此处使用fitting
ORDER BY
子句非常重要。这将负责哪一行获得数字1,哪一行获得递增的数字,并将显示在结果中,因为
>1

WITH NumberedRows AS
(
 SELECT ROW_NUMBER() OVER(PARTITION BY contract_id ORDER BY(SELECT NULL)) AS RowNumber
       ,*
 FROM the_table
)
SELECT * 
FROM NumberedRows
WHERE RowNumber>1;