Sql server 分组行时遇到问题-MS SQL 2008

Sql server 分组行时遇到问题-MS SQL 2008,sql-server,sql-server-2008,tsql,group-by,having-clause,Sql Server,Sql Server 2008,Tsql,Group By,Having Clause,我有一个产品表,其中有一些重复的记录。 我需要根据名称和类型将主键分组 DECLARE @Products TABLE ( pkProductId INT, productName NVARCHAR(500), productType INT ) INSERT INTO @Products (pkProductId, productName, productType) VALUES (1, 'iphone', 0), (2, 'iphone', 0), (3, 'ip

我有一个产品表,其中有一些重复的记录。 我需要根据名称和类型将主键分组

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)
pkProductId
---------------
2
4
5
在我像tsql一样跑步之后

SELECT pr.pkProductId FROM @Products pr
GROUP BY pr.productName, pr.productType
HAVING COUNT(pr.productName) > 1
我想获取这些ID

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)
pkProductId
---------------
2
4
5
感谢您的HEPL:)

您可以使用以下方法获得结果:

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