숫자가 연속으로 증가된 경우 Y 로 표기하려면 함수를 어떻게 만들어야 할까요 ? 0 1 553

by 김병훈 [SQL Query] [2020.08.06 06:18:18]


NO_1   NO_2     년도    학기     학번      연속여부
======================================================
1       0       2007    1학기   200710250
2       0       2007    2학기   200710250
3       0       2008    1학기   200710250
4       0       2008    2학기   200710250
5       1       2011    1학기   200710250     Y
6       2       2011    2학기   200710250     Y 
7       0       2013    1학기   200710250
8       0       2013    2학기   200710250
9       3       2014    1학기   200710250
10      0       2014    2학기   200710250
11      4       2017    1학기   200710250
12      0       2017    2학기   200710250
13      0       2018    1학기   200710250
14      0       2018    2학기   200710250
15      0       2019    1학기   200710250
17      0       2019    2학기   200710250
19      0       2020    1학기   200710250


위와 같은 데이터가 있는 경우 NO_2 칼럼이 숫자가 연속으로 증가된 경우 Y 로 표기하려면

1)UPDATE 문을 써서 연속여부 칼럼에 UPDATE 하는 SQL  구현은 ?

  OR 

2)조회시 나타나게 하려면 함수를 어떻게 만들어야 할까요 ? 


 

by 마농 [2020.08.06 07:39:45]
WITH t AS
(
SELECT 1 no1, 0 no2, 2007 년도, '1학기' 학기, '200710250' 학번 FROM dual
UNION ALL SELECT  2, 0, 2007, '2학기', '200710250' FROM dual
UNION ALL SELECT  3, 0, 2008, '1학기', '200710250' FROM dual
UNION ALL SELECT  4, 0, 2008, '2학기', '200710250' FROM dual
UNION ALL SELECT  5, 1, 2011, '1학기', '200710250' FROM dual
UNION ALL SELECT  6, 2, 2011, '2학기', '200710250' FROM dual
UNION ALL SELECT  7, 0, 2013, '1학기', '200710250' FROM dual
UNION ALL SELECT  8, 0, 2013, '2학기', '200710250' FROM dual
UNION ALL SELECT  9, 3, 2014, '1학기', '200710250' FROM dual
UNION ALL SELECT 10, 0, 2014, '2학기', '200710250' FROM dual
UNION ALL SELECT 11, 4, 2017, '1학기', '200710250' FROM dual
UNION ALL SELECT 12, 0, 2017, '2학기', '200710250' FROM dual
UNION ALL SELECT 13, 0, 2018, '1학기', '200710250' FROM dual
UNION ALL SELECT 14, 0, 2018, '2학기', '200710250' FROM dual
UNION ALL SELECT 15, 0, 2019, '1학기', '200710250' FROM dual
UNION ALL SELECT 17, 0, 2019, '2학기', '200710250' FROM dual
UNION ALL SELECT 19, 0, 2020, '1학기', '200710250' FROM dual
)
SELECT no1, no2, 년도, 학기, 학번
     , DECODE(LAG(no2) OVER(PARTITION BY 학번 ORDER BY no1), no2 - 1, 'Y') 연속여부
  FROM t
;

 

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