지금 보여지려고 하는 형식이
아래와 같이 1년치 데이터를 보여주려고 합니다.
항목 스케줄 1월 2월 3월 4월 5월 6월 7월 9월 10월 11 월 12월
1주 2주 3주 4주 1주 2주 3주 4주 1주 2주 3주 4주 5주 6주 ........................................
전기 전기공사 시작일자부터 종료일자까지 bar표시
가스 가스공사 시작일자부터 종료일자까지 bar표시
지금 프로젝트 일정관리 출력을 하려고 하는데요....
그런데 지금 데이타을 어떻게 뽑와 와야지 저런 형식으로 뽑아 올수 있는지 감이 오질 않습니다....
상용 프로그램도 있지만 지금 현재는 구입하기도 그렇구요...
가로세로 형식으로(크로스) 출력으로 쿼리를 작성해야 하는 법을 몰라서요...
현재 mssql 2000을 사용중입니다...
테이블
달력 테이블 : calendar
날짜: write_day , 주차: week 달에 1주 2주 3주 ..... 뽑와오기 위함
스케줄 테이블 schedule
항목 : type
스케줄 : title
시작일자: date1
종료일자: date2
반복설정 : romethod 스케줄업무중 매일해야것과 특정주차에만 해야 하는 것을 구분하기 위함
특정주차: sweek 주차 반복일경우만 1주, 2주, 3주, 4주, 5주, 6주
이렇게 테이블이 구성되어 있습니다....
두개의 테이블 사용해서
SELECT distinct(DATEPART([month],A.write_day)) as mm,A.week,p.title,p.date1, p.date2,p.type,p.romethod,p.sweek FROM calendar A left outer join (select X.week,X.write_day from calendar X, calendar Y where X.write_day = Y.write_day and convert(varchar(4),Y.write_day,120) = '"&syear&"') F on A.write_day = F.write_day left outer join schedule p on convert(varchar(10),p.date1,120) = A.write_day and convert(varchar(10),p.date1,120) = F.write_day where A.write_day = F.write_day
지금은 위와 같이 뽑와온 상태입니다...
고수님들 어떻게 해야 하는지 대략이라도 좋은지 도움 부탁합니다...
Comment 5
-
건우아빠
2013.05.31 11:38
-
삼미슈퍼스타
2013.05.31 14:29
주차는 지금 calendar테이블에 저장되어진 값이 달력 기준으로 저장되어져 있습니다...
그 저장된 값을 그대로 사용하려고 합니다.....
-
건우아빠
2013.05.31 17:48
그 옆에 연속된 주차를 하나 만드시라는겁니다.
그래야 규칙성을 가지기 때문에 쿼리가 조금은 단순해 지거든요....
그렇지 않고 월의 주차로 하시면 1년 전체 주차를 case when 다 비교하는 표현 해야 할듯 합니다.
더군다나 디비버젼이 2000 이시라 한방 쿼리를 하기에는 한계가 있습니다.
쿼리로는 2000에서는 상당히 복잡 할듯 합니다.
2005버젼 이상이면 조금은 단순해 지겠지만 아무튼 복잡 할듯 하네여.....
프로시저로 구현 하시는게.....
-
맨즈밤
2013.05.31 13:42
주차라는게 애매해서 먼저 기준을 명확히 해야할듯합니다.
제가 속한 곳에서 예를들면 영업쪽에서 보는 월별주차별 매출은 한주에 몇일이 되냐 상관없이 달력상 첫째줄부터 1주차로 보기에
SELECT datepart(wk, '20130531')- datepart(wk, left('20130531', 6) + '01') + 1 이런식으로 해당일자에 주차를 구합니다.
하지만 생산은 한주에 7일이 되야 주차별 생산량 비교가 되야하고 상황에 따라 융통성있게 조정되야 하기에 거기엔 관련 담당자가 직접 주차에 해당하는 일자를 입력합니다.
-
삼미슈퍼스타
2013.05.31 14:31
아네 달력상 주차로 사용하려고 합니다.
먼저
달력테이블을 이용해서 월별 주차에 따른 표를 만드는 쿼리가 기본이 될듯 합니다.
그다음 스케쥴을 해당 주차일 경우에 체크를 두시는게 좋을듯 하구요..
내부적으로는 월별 주차는 화면상 표현이고 내부적으로 연속적인 주차로 계산 하시는게 쿼리가 조금 편하지 않을까 봅니다.
달력테이블에 연속적인 표현이 필요.. 주차의 기준이 무조건 1일 부터 7일을 한주로 볼것이냐 월요일 부터 볼것이냐 등도 기준을 잡으셔야 할듯 합니다. 스케쥴은 생각하지 마시고 월별 날짜 테이블을 화면에 원하시는 주차 형태로 표현 하시는걸 먼저 구현을 하시고 나면 스케쥴은 해당 주차에 1,0으로 표현 하시면 되니까 어렵지는 않을듯 합니다.
1월 2월
1주 2주 3주 4주 5주 1주
1주 2주 3주 4주 5주 6주 ...........