【发布时间】:2021-01-23 15:57:03
【问题描述】:
我需要从多列组合的表中查找重复记录,并在 gridView 中显示重复记录以及其他列的“Y”。
说明:
Table A:
ID, Col1 , Col2, Col3 , Col4, Col5, Col6, Col7, Col8, Col9
1, AVal1, AVal2, AVal3, AVal4, AVal5, AVal6, AVal7, AVal8, AVal9
2, AVal10, AVal11, AVal3, AVal4, AVal5, AVal6, AVal12, AVal13, AVal14
3, AVal15, AVal15, AVal3, AVal4, AVal5, AVal6, AVal16, AVal17, AVal18
Table B
ID, Col1, Col2, Col3
我需要从表 A 中识别出重复记录(Col3、Col4、Col5、Col6)的组合
当我从表 A 中选择记录时,我应该得到 Duplicate 'N' for RowID 1 和 'Y' for RowID 2 & 3。
Select A.Col1,A.Col3, A.Col4, A.Col6, 'Y / N' AS [Duplicate], B.Col2
FROM A
LEFT JOIN B
ON A.ID = B.ID
我尝试使用 GroupBy 和 Partition,但我还有其他列要选择,但不能在 GroupBy 子句中使用。
提前致谢 :)
【问题讨论】:
-
你为什么使用
NOLOCK?您确实了解使用此类查询提示的(重要)含义,对吗? -
另外,“记录”是什么意思? SQL Server 没有“记录”,它有行和列,单行中的单列有值。 “记录”是否意味着整行都相同?也许当一列与另一列具有相同的值(在每一行中)?
-
@Larnu : Record 表示表格中的一行
-
另外,SQL Server 2008 已经在一年多前结束生命;如果您还没有的话,您真的应该尽快查看升级路径。 (从您的问题中删除
NOLOCK也不能回答 为什么 您首先要使用它的问题)。 -
这些行都不相同,因此没有重复。至少,它们对于
ID、Col1、Col2、Col7、Col8和Col9都有不同的值。
标签: sql sql-server database sql-server-2008 duplicates