0

我有一个产品表,其中有一些重复的记录。我需要根据名称和类型对它们进行分组

DECLARE @Products TABLE 
(
    pkProductId INT,
    productName NVARCHAR(500),
    productType INT
)

INSERT INTO @Products (pkProductId, productName, productType)
VALUES
(1, 'iphone', 0),
(2, 'iphone', 0),
(3, 'iphone', 1),
(4, 'iphone', 1),
(5, 'iphone', 1)

在我像 tsql 一样运行之后

SELECT pr.pkProductId FROM @Products pr
GROUP BY pr.productName, pr.productType
HAVING COUNT(pr.productName) > 1

我想获得这些 ID

pkProductId
---------------
2
4
5

谢谢你的帮助:)

4

1 回答 1

2

你可以row_number()用来得到结果:

select pkProductId
from
(
  select pkProductId,
    productName, 
    productType,
    row_number() over(partition by productName, productType order by pkproductId) rn
  from @Products
) d
where rn >1;

请参阅带有演示的 SQL Fiddle

于 2013-05-03T19:41:11.837 回答