2014-07-22 4 views
0

임시로 derived table을 생성해야하는 질문에 답변했습니다 (실제 테이블 사용). https://stackoverflow.com/a/24890815/1688441을 참조하십시오. 대신 다음과 같은 파생 테이블을 사용테이블 (또는 다른 우아한 솔루션) 대신에 세트 사용

는 (선택 및 조합 사용) :

(SELECT 21 AS id UNION SELECT 22) AS tmp 

내 :

SELECT GROUP_CONCAT(CASE WHEN COLUMN1 IS NULL THEN "NULL" ELSE COLUMN1 END) 
FROM archive 
RIGHT OUTER JOIN 
    (SELECT 21 AS id UNION SELECT 22) AS tmp ON tmp.id=archive.column2; 

내가 많이 선호 훨씬 더 우아한 같은 뭔가를 사용할 수 있도록 :

([[21],[22]]) AS tmp 

모든 SQL 데이터베이스 또는 이와 유사한 기능 네? 숫자 settable 대신에 from (set은 1 차원의 값 목록을 말합니다)으로 사용하려면 IN으로 사용하십시오.

그래서, 1 INT 열, 1 문자열 임시 테이블이 2 개 행을 가진 열은 것 같은 표기법을 사용하여 :이 구문

([[21,'text here'],[22,'text here2']]) AS tmp 

답변

1

SQL 서버가 있습니다 :

SELECT A, B, C, 
CASE WHEN D < 21 THEN ' 0-20' 
     WHEN D < 51 THEN '21-50' 
     WHEN D < 101 THEN '51-100' 
     ELSE '>101' END AS E 
,COUNT(*) as "Count" 
FROM (
    values ('CAR', 1,2,22) 
      ,('CAR', 1,2,23) 
      ,('BIKE',1,3,2) 
)TABLE_X(A,B,C,D) 

GROUP BY A, B, C, 
CASE WHEN D < 21 THEN ' 0-20' 
     WHEN D < 51 THEN '21-50' 
     WHEN D < 101 THEN '51-100' 
     ELSE '>101' END 

항복이 :

A B   C   E  Count 
---- ----------- ----------- ------ ----------- 
BIKE 1   3   0-20 1 
CAR 1   2   21-50 2