2012-03-16 3 views
-3

다음 필드와 데이터가있는 테이블이 있습니다.쿼리를 통해 행 조합을 얻는 방법

id type value 
1 1 1 
2 2 1 
3 2 2 
4 2 3 

쿼리를 실행 한 후 내가 가야 아래

1,1 
1,2 
1,3 

같은 임시 테이블 결과와 나는 1 형에서 여러 값이있는 경우 다음 이렇게 데이터가있는 경우 같은

을 수행해야합니다 내가

,369을 결과를 얻을해야

id type value 
1 1 1 
2 1 2 
3 2 1 
4 2 2 
5 2 3 

입니다

1,1 
1,2 
1,3 
2,1 
2,2 
2,3 

감사합니다. 모양

+3

불분명 !!! 출력 뒤에있는 논리는 무엇입니까 –

+0

이 시퀀스를 추측 할 수 있습니까? 15, 16, 17, 23, 25, 26, 27, 28, 29, 30 https://oeis.org/A090461 – Glenn

+0

유형을 기반으로 결과 집합입니다. 그래서 타입 2와 타입 1의 모든 조합이 필요하다면 (타입 1의 값은 (1,2)이고 타입 2의 값은 (1,2,3)입니다. 1,1,1,2 1을 얻으려고합니다. , 3 2,1,2,2,3). – atif

답변

1

:도 같이 쓸 수있다

SELECT t1.value, t2.value 
    FROM table t1 
    JOIN table t2 
    ON t1.type = 1 
    AND t2.type = 2 
; 

:

SELECT t1.value, t2.value 
    FROM (SELECT value FROM table WHERE type = 1) t1 
CROSS 
    JOIN (SELECT value FROM table WHERE type = 2) t2 
; 

(이전은 간단하지만, 후자는 가입 이후,이 의미 CROSS JOIN 것을 명확하게 합계 레코드 간의 관계에 실제로 의존하지 않습니다.)

+1

+1 그 수수께끼를 해결 놀라운 ... –

+0

도움 ruakh 감사. – atif

+0

@atif : 오신 것을 환영합니다! – ruakh

0
SELECT ISNULL(CAST([type] as varchar(20)), '') 
    + ',' 
    + ISNULL(CAST([value] as varchar(20)), '') 
    AS CommaSeparated 
FROM types 
관련 문제