안녕하세요
동일한 테이블에서 다른 조건으로 값을 가져오려 합니다.
SELECT XXX AS X from A WHERE A=1 and b = 2
SELECT XXX AS Y from A WHERE A=1 and b = 3
X Y
10 20
1 5
3 10
결과를 이렇게 받고 싶습니다.
그래서
어떻게 해야 할까요?
질문의 내용만으로는 두 집합간 연결고리를 알 수 없네요? 연결고리가 없다면? 3개씩 3번 연결되어 9개 행이 나오겠지요(카티션 곱) 원하는 3개행의 결과를 얻기 위한 추가 설명이 필요합니다.
TABLE A
SEQ DATE TIME VALUE
1 2016-10-16 00:00:00 10.10
2 2016-10-16 01:00:00 20.20
3 2016-10-16 02:00:00 30.30
4 2016-10-16 03:00:00 40.40
5 2016-10-17 00:00:00 11.11
6 2016-10-17 01:00:00 22.22
7 2016-10-17 02:00:00 33.33
8 2016-10-17 03:00:00 44.44
테이블 A에는 위와 같은 내용이 들어 있습니다.
VALUE는 varchar입니다.
오늘 00:00:00 시간의 VALUE와 어제의 00:00:00의 VALUE값을 비교 하려고 합니다.
WITH t(seq, date, time, value) AS ( SELECT 1, '2016-10-16', '00:00:00', '10.10' UNION ALL SELECT 2, '2016-10-16', '01:00:00', '20.20' UNION ALL SELECT 3, '2016-10-16', '02:00:00', '30.30' UNION ALL SELECT 4, '2016-10-16', '03:00:00', '40.40' UNION ALL SELECT 5, '2016-10-17', '00:00:00', '11.11' UNION ALL SELECT 6, '2016-10-17', '01:00:00', '22.22' UNION ALL SELECT 7, '2016-10-17', '02:00:00', '33.33' UNION ALL SELECT 8, '2016-10-17', '03:00:00', '44.44' ) SELECT time , MIN(CASE date WHEN '2016-10-16' THEN value END) "2016-10-16" , MIN(CASE date WHEN '2016-10-17' THEN value END) "2016-10-17" FROM t WHERE date IN ('2016-10-16', '2016-10-17') GROUP BY time ;