根据不同列中的值查找重复行

时间:2016-02-24 15:43:15

标签: sql sql-server database tsql

我在这张表中包含以下数据:

CaseID|ProductNr|CodeNr|Test
    1 |1234     |444   |No
    1 |1235     |444   |No
    1 |1236     |444   |No
    1 |1237     |666   |No
    1 |1238     |777   |No
    2 |1244     |555   |No
    2 |1245     |555   |No

我想要一个查找所有" ProductNr"具有相同的" CodeNr"在同一个" CaseID"。

E.g。如果.. Where CaseId = 1结果应如下所示:

CaseID|ProductNr|CodeNr|Test
    1 |1234     |444   |No
    1 |1235     |444   |No
    1 |1236     |444   |No

我正在使用sql server

应该可以更改CaseId值.CaseId值应该是一个参数..因为查询需要是存储过程的一部分..

2 个答案:

答案 0 :(得分:3)

以下查询显示YourTable的{​​{1}}等于给定参数的行,并且同一个表中至少有一行具有相同的CaseID,相同CaseID,但CodeNr不同。这是你在找什么?

ProductNr

答案 1 :(得分:-1)

您可以使用:

SELECT CaseID, ProductNr, CodeNr, Test
FROM (
  SELECT CaseID, ProductNr, CodeNr, Test,
         COUNT(CodeNr) OVER (PARTITION BY CodeNr) AS cnt
  FROM mytable
  WHERE CaseID = 1) AS t
WHERE t.cnt > 1

COUNT窗口函数应用于CodeNr分区。此查询将返回属于大于1的分区的任何记录。

注意:如果有多组重复记录,您还可以使用RANK,以便识别属于不同CodeNr组的记录。< / p>

注2:只要每个CodeNr分区仅包含唯一的ProductNr值,此查询就会起作用。