database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41558 게시물 읽기
No. 41558
년도가 넘어가는 주차의 계산이 안돼네요
작성자
MSSQL
작성일
2018-04-26 11:06
조회수
5,850

 20180412 ~ 20190611 을 구한다 가정했을 때 

 

일자                  주차    

20180412 15

20180413 15

20180414 15

20180415 15

20180416 16

.

.

.

20181230 52

20181231 01

20190101 01

20190102 01

.

.

.

20190610 24

20190611 24

 

이렇게 까진 나와서 이 데이터셋에서 주의 시작과 종료를 구하려고 합니다.

주의 시작은 일요일이고 종료는 토요일이여서 

TO_CHAR(TO_DATE(일자,'YYYYMMDD')+1,'IW') 이 걸로 주차는 구했습니다.

주차로 GROUP BY 하고 주의 시작일 종료일을 MIN(일자),MAX(일자)로 구하니 12월 마지막주와 다음해 1월 첫재주가 1주차로 나와서

해결이 안돼네요

 

이 글에 대한 댓글이 총 1건 있습니다.

God 마농님이 짜주신 SQL로 해결했습니다 

SELECT

WEEK_SEQ

MIN(YYYYMMDD) AS START_DATE , 

        MAX(YYYYMMDD) AS END_DATE

FROM (

        SELECT TO_CHAR(CALC_DATE,'YYYYMMDD') AS YYYYMMDD

        DENSE_RANK() OVER(ORDER BY TRUNC(CALC_DATE,'D')) AS WEEK_SEQ

        FROM (

        SELECT TO_DATE(START_DATE,'YYYYMMDD') + LEVEL - 1 AS CALC_DATE

        FROM (

                SELECT '20180412' AS START_DATE, '20190611' AS END_DATE FROM DUAL

                ) CONNECT BY LEVEL <= TO_DATE(END_DATE,'YYYYMMDD')+1 - TO_DATE(START_DATE,'YYYYMMDD') 

        )

)

GROUP BY WEEK_SEQ                

 

MSSQL님이 2018-04-26 11:31에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41563mssql 의 tinv 함수 오라클로...
박용철
2018-05-09
5251
41561[mybatis]컬럼명을 동적으로 쓸때 달러를 안쓰고 구현하는방법이있나요?
고래
2018-05-08
6113
41560차감로직이 안떠오르네요 [1]
블라
2018-05-03
5502
41558년도가 넘어가는 주차의 계산이 안돼네요 [1]
MSSQL
2018-04-26
5850
41557랜덤 업데이트 문의드립니다. [3]
서준용
2018-04-24
5798
41556쿼리 질문 드립니다. [1]
chokm
2018-04-24
5769
41553대량 update시 실패 [2]
MOON
2018-04-18
5892
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다