3개의 union중
A,B,C 의 유니온 3개가 있다면
그중 B유니온의 컬럼 Date에만 -1 즉
A,B,C의 에 Date컬럼에서 예시) 20161011 이라면 B컬럼에만 20161010 을 출력하고싶은데 자꾸 대응하는식과 다르다고 나오는데 어떻게해야하나요?
또 다른 질문은
A | B | C | a_code | b_code | c_code |
M | KBS | MBC | 12345 | ||
M | KBS | SBS | 12345 | 12345 | 54321 |
M | KBS | SBS | 12345 | 12345 | 54321 |
M | KBS | MBC | 54321 | ||
M | KBS | MBC | 54321 |
위의 데이터가 존재하는데 c_code가 있는데이터는 컬럼C부분이 다른 3개와 다릅니다
또한 a_code가 다른a_code와 다릅니다 대신 c_code와 같은데
이런경우 SBS를 나머지 MBC로 출력하고싶은데 방법을 모르겠습니다.
MBC -> 547988
SBS -> 549269
이런식으로 코드가 관리되고 있는 건가요?
복잡하게 설명하신 것 같은데 A_CODE에만 값이 있고 B_CODE, C_CODE에 값이 없으면
C에 있는 값을 그대로 보여주고
A_CODE와 C_CODE가 다르면 C_CODE의 명칭을 보여주면 되는 건가요?
SELECT A, B , CASE WHEN A_CODE != NVL(C_CODE,'*') THEN (SELECT 코드명칭 FROM 코드테이블 WHERE CODE = C_CODE) ELSE C END C , A_CODE, B_CODE, C_CODE FROM T
이런 식으로 하시면 되지 않을까요?
이해가 여전히 잘 안 되네요. 뭘 원하시는지를 알기가 어려워요.
설명만 보면 그냥 C가 SBS이면 MBC로만 바꾸면 될 것 같이 적어놓으셔서..
코드테이블이 있긴 있는 거죠? 547988코드가 MBC가 아닌가요?
맞다면 저대로 하면 MBC가 나올텐데요.
단순히 설명하신 조건으로 SBS를 MBC로 나오게 할 수는 있지만
정말로 그게 에그님이 원하시는 건지 확신할 수 없어 쿼리를
만들 수가 없네요.
---------------------------------------------------------------------
C_code는 4개중 3개 A,B,C = A를 묶고 그위에 한번더 조인하여
A,B를 묶었습니다
B테이블 컬럼 C_code
---------------------------------------------------------------------
=> 한국어인데 저는 에그님이 무슨 말씀을 하시는 건지 전혀 이해할 수가 없어요.
전에도 그런 분 계셨거든요;
이해력 좋으신 분 답글 좀 달아주세요..
일단 제가 말씀드린 조건(A_CODE에만 값이 있고 B_CODE, C_CODE에 값이 없으면 C에 있는 값을 그대로 보여주고 A_CODE와 C_CODE가 다르면 C_CODE의 명칭을 보여준다)
이 에그님이 원하시는 조건에 맞는 건지 확인해보시구요. 맞다면 아래 쿼리로 바꿔보세요.
제가 C_CODE NULL처리 조건을 잘못 줬네요.
SELECT A, B , CASE WHEN A_CODE != NVL(C_CODE,A_CODE) THEN (SELECT 코드명칭 FROM 코드테이블 WHERE CODE = C_CODE) ELSE C END C , A_CODE, B_CODE, C_CODE FROM T
이렇게 해보세요.