2013-05-03 101 views
0

我有一個產品表有一些重複的記錄。 我需要primarykeys 根據名稱和類型分組行遇到問題 - MS SQL 2008

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) 

atfer分組他們後,我運行像TSQL

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

我想這些ID

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

謝謝你的H EPLS :)

回答

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 with Demo

+0

謝謝你,它的工作完美。 – 2013-05-03 19:53:41

+0

@SaygınKarahan不客氣。 – Taryn 2013-05-03 19:53:51