๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[SQL] ๊ฐ๋จํ๊ฒ ๋ฐ์ดํฐ๋ณ ์์ ๋งค๊ธฐ๊ธฐ ๋ณธ๋ฌธ
๋ฐ์ํ
์ฌ๊ธฐ ๋ ์ง๋ณ๋ก ์ซ์๊ฐ ์์๋๋ก ์จ์ ธ์๋ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.(ํ ๋ ์ง์ ๊ฐ์ ์ซ์๋ ์์ต๋๋ค)
SELECT
A,
DATE_COLUMN
FROM
TABLE
ORDER BY
DATE_COLUMN ASC
์ด A ์ปฌ๋ผ์ 1๋ฒ๋ง ์ถ์ถํ์ฌ ์๋ฒ์ ๋งค๊ธฐ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. ์์๋ณ์๋ฅผ ํ์ฉํ๋ค.
SELECT
*,
CASE WHEN A_TMP = '1' THEN ROW_NUMBER() OVER(PARTITION BY A ORDER BY DATE_COLUMN ASC) END AS RESULT
FROM
(
SELECT
A,
DATE_COLUMN,
CASE WHEN A = '1' THEN 1 END AS A_TMP
FROM
TABLE
ORDER BY
DATE_COLUMN ASC
)
ORDER BY DATE_COLUMN ASC
A_TMP๊ฐ ์์๋ณ์ ์ ๋๋ค. A๊ฐ 1์ผ๋ ๋ง๋ค 1์ด๋ผ๋ ์ซ์๋ฅผ ์์ ์ปฌ๋ผ์ ์ ์ฅํ์ฌ, ์ด ์์์ปฌ๋ผ์ด 1์ผ๋ A๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์๋ฒ์ ๋งค๊น๋๋ค.
2. ์์๋ณ์๋ฅผ ํตํ์ง ์๊ณ ๋ฐ๋ก ์์ ๋งค๊ธฐ๊ธฐ
์ฌ์ค ์ด๊ฒ ํต์ฌ์ ๋๋ค. ์์์ ๋ญ๋นํ์ง ์์ผ๋ฉด์ ์ ์ผ ๊ฐ๋จํ๊ณ ์ฝ๊ณ ์ง๊ด์ ์ ๋๋ค.
A๊ฐ 1์ผ๋ A๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์์๋ฅผ ๋งค๊ธฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
SELECT
A,
DATE_COLUMN,
CASE WHEN A = '1' THEN ROW_NUMBER() OVER(PARTITION BY A ORDER BY DATE_COLUMN ASC) END AS RESULT
FROM
TABLE
ORDER BY
DATE_COLUMN ASC
'๊ฐ๋ฐ > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments