我在这张表中包含以下数据:
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值应该是一个参数..因为查询需要是存储过程的一部分..
答案 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
值,此查询就会起作用。