3

私はテーブルを持っています

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

25まったく同じitem/percentage値が含まれているため、結果から除外されます。1

4

2 に答える 2

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 フィドル

于 2013-07-25T12:00:38.217 に答える
0

これはあなたが望むクエリだと思います:

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

(他の2つの4を含めることで、出力例に小さな間違いを犯したと思います。それらの(アイテム、パーセンテージ)値は、グループ1とグループ3の重複です)。

于 2013-05-17T20:45:28.817 に答える