A컬럼 | B컬럼 | C컬럼 | D컬럼 |
1 | A000 | S | L |
2 | B000 | S | S |
3 | A000 | S | S |
4 | C000 | S | L |
안녕하세요.
업무중 어려움을 겪고 있어 이렇게 도움을 청해봅니다.
위의 표는 제가 하고자하는 데이터를 간단히 표로 만든것인데요.
B컬럼을 보시면 1번/3번행의 데이터가 A000 있고,
해당 ROW의 D컬럼을 보시면 1번 L / 3번 S 이렇게 데이터가 있습니다
하고자하는것은 B컬럼 기준으로 A000처럼 동일한 값중 D컬럼의 데이터들을 S를 L로 바꾸고 싶습니다
D컬럼의 3번째열의 데이터 S -> L 이렇게죠
결국 쿼리 조회 이벤트가 발생하면 먼저 B컬럼의 A000인 데이터값들은 모두 D컬럼에서 L로 가공을 하고 싶은것입니다.
내부 조회시 제가 하고자하는 값으로 데이터 변환을 해서 인라인뷰형태로 가지고 있으려고요.
인라인뷰형태로 데이터를 가공한후, 바깥 쿼리문에서 D컬럼의 L인 데이터만을 다시 조건으로 써서 값을 뽑아내려고 하는 것입니다.
다시 말씀드리면, B컬럼 기준으로 B컬럼값중 D컬럼에 L이 있으면,
L이 있었던 동일한 B컬럼의 데이터에 해당하는 D컬럼은 모두 S->L로 바꾸고 싶습니다.
도움을 주시면 감사하겠습니다.
감사합니다.
쿼리수행전 데이터
A컬럼 | B컬럼 | C컬럼 | D컬럼 |
1 | A000 | S | L |
2 | B000 | S | S |
3 | A000 | S | S |
4 | C000 | S | S |
5 | D000 | S | L |
6 | D000 | S | S |
쿼리 수행후 데이터
A컬럼 | B컬럼 | C컬럼 | D컬럼 |
1 | A000 | S | L |
2 | B000 | S | S |
3 | A000 | S | L |
4 | C000 | S | S |
5 | D000 | S | L |
6 | D000 | S | L |
WITH t AS ( SELECT 1 a, 'A000' b, 'S' c, 'L' d FROM dual UNION ALL SELECT 2, 'B000', 'S', 'S' FROM dual UNION ALL SELECT 3, 'A000', 'S', 'S' FROM dual UNION ALL SELECT 4, 'C000', 'S', 'S' FROM dual UNION ALL SELECT 5, 'D000', 'S', 'L' FROM dual UNION ALL SELECT 6, 'D000', 'S', 'S' FROM dual ) SELECT a , b , c , MIN(d) OVER(PARTITION BY b) d FROM t ORDER BY a ;