Skip to content

Instantly share code, notes, and snippets.

@hearimm
Last active January 8, 2018 06:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hearimm/210d198853e114372235c2fe3aab6e34 to your computer and use it in GitHub Desktop.
Save hearimm/210d198853e114372235c2fe3aab6e34 to your computer and use it in GitHub Desktop.
rgr.kr sql 질문
WITH T1 AS (
SELECT 1 AS A , 'X' AS B , 'X' AS C FROM DUAL UNION ALL
SELECT 2 , 'X' , 'X' C FROM DUAL UNION ALL
SELECT 3 , 'X', 'X' C FROM DUAL
), T2 AS (
SELECT 1 AS A1, NULL AS A2, 'Y' AS B , 'Y' AS C FROM DUAL UNION ALL
SELECT NULL,2 ,'Y','Y' C FROM DUAL UNION ALL
SELECT 3,NULL ,'Y','Y' C FROM DUAL
)
SELECT T1.* ,T3.*
FROM T1
JOIN (
SELECT CASE WHEN A1 IS NULL THEN A2
WHEN A2 IS NULL THEN A1 END AS A
, B
, C
FROM T2
) T3 ON (T1.A = T3.A)
;
-- A B C A B C
------------ - - ---------- - -
-- 1 X X 1 Y Y
-- 2 X X 2 Y Y
-- 3 X X 3 Y Y
WITH T1 AS (
SELECT 1 AS A , 'X' AS B , 'X' AS C FROM DUAL UNION ALL
SELECT 2 , 'X' , 'X' C FROM DUAL UNION ALL
SELECT 3 , 'X', 'X' C FROM DUAL
), T2 AS (
SELECT 1 AS A1, 2 AS A2, 'Y' AS B , 'Y' AS C FROM DUAL UNION ALL
SELECT 2,3 ,'Y','Y' C FROM DUAL UNION ALL
SELECT 3,2 ,'Y','Y' C FROM DUAL
)
--SELECT * FROM T1;
--SELECT * FROM T2;
SELECT T1.* ,T2.*
FROM T1
LEFT JOIN T2 ON T1.A = T2.A1 OR T1.A = T2.A2
;
-- A B C A1 A2 B C
------------ - - ---------- ---------- - -
-- 1 X X 1 2 Y Y
-- 2 X X 1 2 Y Y
-- 2 X X 2 3 Y Y
-- 2 X X 3 2 Y Y
-- 3 X X 2 3 Y Y
-- 3 X X 3 2 Y Y
-- 스티플
WITH T1 AS (
SELECT 1 AS A , 'X' AS B , 'X' AS C FROM DUAL UNION ALL
SELECT 2 , 'X' , 'X' C FROM DUAL UNION ALL
SELECT 3 , 'X', 'X' C FROM DUAL
), T2 AS (
SELECT 1 AS A1, 2 AS A2, 'Y' AS B , 'Y' AS C FROM DUAL UNION ALL
SELECT 2,3 ,'Y','Y' C FROM DUAL UNION ALL
SELECT 3,2 ,'Y','Y' C FROM DUAL
)
--SELECT * FROM T1;
--SELECT * FROM T2;
SELECT T1.* ,T2.*, T3.*
FROM T1
LEFT JOIN T2 ON T1.A = T2.A1
LEFT JOIN T2 T3 ON T1.A = T3.A2
ORDER BY T1.A
;
-- A B C A1 A2 B C A1 A2 B C
------------ - - ---------- ---------- - - ---------- ---------- - -
-- 1 X X 1 2 Y Y
-- 2 X X 2 3 Y Y 1 2 Y Y
-- 2 X X 2 3 Y Y 3 2 Y Y
-- 3 X X 3 2 Y Y 2 3 Y Y
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment