Table이 다음과 같을 때 어떻게 조건절을 주어야 할지 모르겠습니다.
원하는 조건은 Col과 Emp가 같을 때 No 가 D 인 경우는 불러오지 않도록 하고 싶습니다.
즉, a-1-D인 그룹, b-2-D인 그룹은 제외하고자 하는데요,
select Col, Emp, No
from table
where Col||Emp||No not like '%D'
이런식으로 접근하면 그냥 No가 D인 경우는 다 불러오지 않아서요 (마지막 행인 d-1-D 도 삭제됨)
어떤 식으로 해야하나요?
필요한 함수 알려주시면 감사하겠습니다. (Oracle 환경의 Spotfire 사용 툴이라 Create 등은 먹지 않습니다)
Col Emp No
a 1 D
a 1 D
a 1 C
b 2 D
b 2 D
c 2 P
d 1 A
d 1 D
Comment 3
-
쿵쿵이
2017.05.30 14:10
-
ㅁㄴㄴㄴ
2017.05.30 14:19
Group By 함수는 Group 집계함수 없이 저렇게 사용할 수 있나요? 이렇게 처리하면 Col끼리의 집합, Emp끼리의 집합, No 끼리의 집합이 생기고 그 안에서 비교하는것인지요?
-
知音
2017.06.23 14:59
혹시 원하시는 결과가 이게 아닌지요
참고하세요
with tbl as (
select 'a' col, '1' emp, 'D' no union all
select 'a' col, '1' emp, 'D' no union all
select 'a' col, '1' emp, 'C' no union all
select 'b' col, '2' emp, 'D' no union all
select 'b' col, '2' emp, 'D' no union all
select 'c' col, '2' emp, 'P' no union all
select 'd' col, '1' emp, 'A' no union all
select 'd' col, '1' emp, 'D' no
)
select col
, emp
, no
from (
select col
, emp
, no
, count(col+emp)over(partition by col+emp+no) no_cnt
from tbl
) t
where no_cnt < 2
---------- 결과 --------------------------------
col emp no
a 1 C
c 2 P
d 1 A
d 1 D
Col과 Emp는 데이터타입이 서로 달라서 = 로 판단할 수 없습니다
select Col,Emp,No from #t1
GROUP BY Col,Emp,NO
Having No <> 'D'