2013-04-29 1 views
3

나는 결과 세트가SQL 서버는

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을해야

나는 별개의 groups.Basically 을 인출 할
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 

테이블에서 제외되어있는 테이블에 서로 다른 그룹을 찾을 수 그 결과 정확히 같은 것을 포함하고 있습니다. item/percentage 값은 1

+0

설정 무엇을 통해 고유? 그룹 1, 그룹 3, 그룹 4가 결과 집합에 표시되지만 2와 5는 표시되지 않는 이유는 무엇입니까? – cdhowie

+0

기본적으로 제품 1,2,5 동일한 구성을 가지고 있습니다. 그래서 그들은 duplicates.so 내가 prd 1을해야합니다 1 – user2333435

+1

왜 제품 2가 반환됩니다, 왜 2 또는 5? 중복 그룹 중 어느 것이 반환 될지 결정하기 위해 부과하려는 주문이 있습니까? 또한, 엔진 별 SQL 기능을 사용하는 응답이 있기 때문에 사용중인 데이터베이스 엔진을 알아야합니다. – cdhowie

답변

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 

가 (난 당신이 두 개의 다른 네의를 포함하여 예제 출력의 작은 실수를 생각한다. 항목 (백분율) 값은 그룹 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