ํํฐ์
DB/์ฟผ๋ฆฌ2023. 10. 10. 16:05
Table of Contents
๐ฉํํฐ์
ROW_NUMBER() OVER(PARTITION BY MP.ORGN_CD, MP.BCD_CD ORDER BY ISNULL(MP.MDATE, MP.CDATE) DESC)
- ๋จผ์ , PARTITION BY MP.ORGN_CD, MP.BCD_CD ๋ถ๋ถ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ ์งํฉ์ด ํํฐ์
(๊ทธ๋ฃน)์ผ๋ก ๋ถํ ๋ฉ๋๋ค.
์ด ํํฐ์ ์ MP.ORGN_CD์ MP.BCD_CD ๊ฐ์ด ๋์ผํ ํ๋ค์ ๊ทธ๋ฃน์ ํ์ฑํฉ๋๋ค. - ๋ค์์ผ๋ก, ORDER BY ISNULL(MP.MDATE, MP.CDATE) DESC ๋ถ๋ถ์ ๋ฐ๋ผ ๊ฐ ํํฐ์
๋ด์์ ํ๋ค์ด ์ ๋ ฌ๋ฉ๋๋ค.
์ ๋ ฌ์ MP.MDATE ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋ฉฐ, ๋ง์ฝ MP.MDATE๊ฐ NULL์ด๋ฉด MP.CDATE ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์ ๋ ฌ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. - ๊ฐ ํํฐ์
๋ด์์ ์ ๋ ฌ๋ ์์์ ๋ฐ๋ผ ROW_NUMBER() ํจ์๊ฐ ์ผ๋ จ๋ฒํธ๋ฅผ ํ ๋นํฉ๋๋ค.
์ด๋, ๊ฐ์ฅ ์ ๋ ฌ ์์๊ฐ ๋์ ํ์ด ๊ฐ์ฅ ์์ ์ผ๋ จ๋ฒํธ๋ฅผ ๋ฐ๊ณ , ๊ทธ ๋ค์ ํ์ด ๋ ํฐ ์ผ๋ จ๋ฒํธ๋ฅผ ๋ฐ์ต๋๋ค.
์ด๋ ๊ฒ ๊ฐ ํํฐ์ ๋ด์ ํ๋ค์ด ์ผ๋ จ๋ฒํธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. - ๋ง์ง๋ง์ผ๋ก, ํํฐ์ ๋ง๋ค ๋ถ์ฌ๋ ์ผ๋ จ๋ฒํธ๊ฐ ๊ฒฐ๊ณผ ์งํฉ์ ํฌํจ๋์ด ๋ฐํ๋ฉ๋๋ค.
์์
| ORGN_CD | BCD_CD | MDATE | CDATE |
|---------|--------|-------------|-------------|
| A | X | 2023-01-01 | 2023-02-01 |
| A | X | 2023-03-01 | NULL |
| A | Y | 2023-02-15 | 2023-03-15 |
| B | Z | NULL | 2023-01-15 |
ROW_NUMBER() OVER(PARTITION BY ORGN_CD, BCD_CD ORDER BY ISNULL(MDATE, CDATE) DESC)
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค:
| ORGN_CD | BCD_CD | MDATE | CDATE | RowNumber |
|---------|--------|-------------|-------------|-----------|
| A | X | 2023-01-01 | 2023-02-01 | 2 |
| A | X | 2023-03-01 | NULL | 1 |
| A | Y | 2023-02-15 | 2023-03-15 | 2 |
| B | Z | NULL | 2023-01-15 | 1 |
์ ๊ฒฐ๊ณผ์์ ๋ณผ ์ ์๋ฏ์ด,
ํํฐ์
(A, X) ๋ด์์๋ MDATE์ CDATE์ ๊ฐ์ ๋ฐ๋ผ RowNumber๊ฐ ๋ถ์ฌ๋๊ณ , ๋ค๋ฅธ ํํฐ์
๋ค๋ ์ ์ฌํ๊ฒ ๋ถ์ฌ๋ฉ๋๋ค.
'DB > ์ฟผ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MSSQL ๊ฒ์/์ ๋ฌด์ ๋์๋๋ ์ฟผ๋ฆฌ (1) | 2023.11.25 |
---|---|
STUFF ํจ์ (0) | 2023.10.10 |
WITH ์ (1) | 2023.10.05 |
์๋์ฐํจ์ (0) | 2023.10.05 |
APPLY (0) | 2023.10.05 |