2013-04-29 78 views
3

我有表SQL服務器,找到不同的羣體在一個表

prdID item  percentage 
1  10   50 
1  20   50 
2  10   50 
2  20   50 
3  20   30 
3  20   70 
4  10   50 
4  20   30 
4  30   20 
5  10   50 
5  20   50 

我要取不同groups.Basically 結果集應該是

group item  percentage 
1  10  50 
1  20  50 
3  20  30 
3  20  70 
4  10  50 
4  20  30 
4  30  20 

25從排除結果是因爲它們包含的值完全相同item/percentage的值與1

+0

鮮明的對什麼設置?爲什麼組1,組3和組4代表結果集,但不是2和5? – cdhowie 2013-04-29 19:36:09

+0

基本產品1,2,5有相同的成分。所以他們是重複的,所以我需要prd 1 – user2333435 2013-04-30 02:58:43

+1

爲什麼產品1返回,爲什麼不是2或5?是否有某種你想強加的決定來決定哪個重複組被返回?此外,我們需要知道您使用哪個數據庫引擎作爲答案,可能會使用特定於引擎的SQL功能。 – cdhowie 2013-04-30 14:46:52

回答

0

我覺得這個i的查詢你想要的:

SELECT MIN(prdId) AS group, item, percentage 
FROM <tablename> 
GROUP BY item, percentage 

這將會對您的示例數據如下結果:

group item  percentage 
1  10  50 
1  20  50 
3  20  30 
3  20  70 
4  30  20 

(我想你在你的例子輸出通過包括另外兩個4的犯點小錯。他們的(項目,百分比)值是組1和組3的重複)。

0
select * 
from table_name t 
inner join (
select min(prdID) as prdID 
from 
(
SELECT 
    table_name.prdID as prdID, 
    STUFF((
    SELECT ',' + cast(item as varchar)+'~'+cast(percentage as varchar) 
    FROM table_name t2 
    WHERE t2.prdID = table_name.prdID 
    FOR XML PATH ('')) 
,1,2,'') AS Names 
FROM table_name 
GROUP BY table_name.prdID 
)t 
group by Names)R 
on t.prdID=R.prdID 

SQL FIDDLE