从多列组合的 table 中获取重复记录,并显示 'Y' 重复记录和 'N' 单个记录
Get Duplicate records from a table on combination of Multiple Columns and show 'Y' for Duplicate and 'N' for Single records
我需要从 table 中的多列组合中查找重复记录,并在 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
我需要从 Table A On the Combination of (Col3, Col4, Col5, Col6)
中识别重复记录
并且当我 select 来自 Table A 的记录时,我应该得到 RowID 1 的重复 'N' 和 RowID 2 和 3 的 'Y'。
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,但我还有其他列也需要 selected whihc 不能在 GroupBy 子句中使用。
提前致谢
:)
我想你想要 row_number()
:
select t.*,
(case when row_number() over (partition by col3, col4, col5, col6 order by col1) = 1
then 'N' else 'Y'
end) as flag
from t;
我需要从 table 中的多列组合中查找重复记录,并在 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
我需要从 Table A On the Combination of (Col3, Col4, Col5, Col6)
中识别重复记录并且当我 select 来自 Table A 的记录时,我应该得到 RowID 1 的重复 'N' 和 RowID 2 和 3 的 'Y'。
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,但我还有其他列也需要 selected whihc 不能在 GroupBy 子句中使用。
提前致谢 :)
我想你想要 row_number()
:
select t.*,
(case when row_number() over (partition by col3, col4, col5, col6 order by col1) = 1
then 'N' else 'Y'
end) as flag
from t;