연번설정 0 2 158

by 김선우 [SQL Query] 연번설정 PostgreSQL [2019.10.06 21:54:28]


안녕하세요

 

다음과 같은 결과를 얻고자합니다.

 

aID        bID       numID

A01       K01          0

B01       X01          0

A01       X01          1

A02       X01          2

A04       X01          3

 

 

aID,bID,numID라는 컬럼이 존재하는데 aID,bID의 값이 유일한 경우에는 0 그렇지 않고 복수개 존재하는 경우에는 aID로 정렬해서 카운트를 1부터 시작해서 부여하는 SQL은 어떻게 작성하나요?

 

 

 

by jkson [2019.10.07 09:12:10]

예시를 잘못 주신 것인지 이해가 잘 안 되네요.

aid, bid는 예시상으로 모두 유일하고요.

bid기준으로 중복을 체크하신 건가 해서 보아도

x01은 중복되지만

b01, x01일 때는 numid가 0이고요. bid 중복기준이라면 b01의 numid는 4가 되어야할 거 같은데..


by 마농 [2019.10.07 09:26:45]
WITH t AS
(
SELECT 'A01' aid, 'K01' bid
UNION ALL SELECT 'B01', 'X01'
UNION ALL SELECT 'A01', 'X01'
UNION ALL SELECT 'A02', 'X01'
UNION ALL SELECT 'A04', 'X01'
)
SELECT aid, bid
     , ROW_NUMBER()  OVER(PARTITION BY bid, SUBSTR(aid, 1, 1) ORDER BY aid)
     - CASE COUNT(*) OVER(PARTITION BY bid, SUBSTR(aid, 1, 1))
       WHEN 1 THEN 1 ELSE 0 END AS numid
  FROM t
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입