SQL server,在表中查找不同的组

SQL server,在表中查找不同的组,sql,group-by,distinct,relational-division,Sql,Group By,Distinct,Relational Division,我有一张桌子 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

我有一张桌子

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
基本上,我想把不同的组取出来 结果集应该是

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

2
5
被排除在结果之外,因为它们包含与
1

完全相同的
项目/百分比
值。我想这是您想要的查询:

SELECT MIN(prdId) AS group, item, percentage
FROM <tablename>
GROUP BY item, percentage
(我认为您在示例输出中犯了一个小错误,包括了另外两个4。它们的(项目,百分比)值与组1和组3重复)


在哪一组上不同?为什么第1、3和4组在结果集中表示,而不是第2和第5组?基本上,产品1、2、5具有相同的组成。所以它们是重复的。所以我只需要prd 1为什么返回产品1,为什么不返回2或5?您是否需要某种排序来决定返回哪些重复组?另外,我们需要知道您使用的是哪个数据库引擎,因为任何答案都可能使用特定于引擎的SQL特性。
group   item     percentage
1        10        50
1        20        50
3        20        30
3        20        70
4        30        20
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