ID num val
4605 1300 100001
4606 1100 100002
4607 0501 100006
4608 1100 100008
이런 테이블이 있다고 했을때,
select *
from TABLE
where ID in (
'4605',
'4606',
'4607',
'12345'
)
이렇게 쿼리를 날리면,
ID num val
4605 1300 100001
4606 1100 100002
4607 0501 100006
이런 결과가 나오잖아요?
이걸,
ID num val
4605 1300 100001
4606 1100 100002
4607 0501 100006
12345 null null
이렇게 하는 가장 간단한 쿼리는 뭘까요?
where 절에서 in 조건에 들어간 값 중 없는 값의 다른 항목은 null 로 나오게...
Comment 5
-
Terry
2015.09.22 18:38
-
두루미알
2015.09.23 16:03
답변 감사합니다!!
-
minsouk
2015.09.23 10:45
WITH TBLA (ID,NUM,VAL) AS(SELECT '4605','1300','100001' UNION ALLSELECT '4606','1100','100002' UNION ALLSELECT '4607','0501','100006' UNION ALLSELECT '4608','1100','100008')SELECT A.ID, B.NUM, B.VALFROM(VALUES ('4605'),('4606'),('4607'),('111')) A (ID)LEFT OUTER JOIN TBLA BON B.ID = A.ID -
Terry
2015.09.23 11:40
이런 방법도 있군요. ^^
감사합니다~~!!
-
두루미알
2015.09.23 16:04
감사합니다.
이런식으로 하는게 가장 심플하겠군요!
어차피 조건으로 들어가는 건들은 나와있는 형태이니
하기 형태대로 처리하시는게 제일 편할듯하네요.
----쿼리시작----
with tblA (ID,num,val) As
(
Select '4605','1300','100001' Union All
Select '4606','1100','100002' Union All
Select '4607','0501','100006' Union All
Select '4608','1100','100008'
)
,tblB (ID) As
(
Select '4605' Union All
Select '4606' Union All
Select '4607' Union All
Select '12345'
)
Select
a.*
From
(
--1. 조건에 부합되는 자료
Select a.ID As ID
,a.num As num
,a.val As val
,1 As seq
From tblA a
Where a.ID In (
'4605'
,'4606'
,'4607'
,'12345'
)
Union All
--2. 조건에 부합되지 않는 자료
Select a.ID As ID
,NULL As num
,NULL As val
,2 As seq
From tblB a
Where Not Exists (
Select 'x'
From tblA b
Where a.ID = b.ID
)
) a
Order By a.seq Asc
----쿼리끝----