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
운영게시판
최근게시물
MS-SQL Q&A 5959 게시물 읽기
No. 5959
쿼리 질문입니다 고수님들 도와주세요
작성자
송기백(keiback)
작성일
2011-10-07 22:35ⓒ
2011-10-07 22:41ⓜ
조회수
6,819

select
  s.name, s.userid , sp.LearningLevelId, sp.createdate, sp.updatedate, progressid,  sp.bookname , sp.part
 from admin a
  inner join Student s on a.jisacode = s.jisacode
  inner join
  (
     select  StudentID, LearningLevelId , sp.createdate, sp.updatedate, progressid, cm2.content as bookname ,cm.content as part
     from dbo.StudentProgress sp
     Inner join dbo.LearningLevel ll on ll.LevelID = sp.LearningLevelId
     inner join dbo.CodeMaster cm on  ll.Part =  cm.CodeID
     inner join dbo.CodeMaster cm2 on  ll.Step =  cm2.CodeID
     where type = 2
  ) sp on s.pid = sp.studentid
 where a.mid = 'p'

해당 쿼리를 돌리면

name   |   userid  |  LearningLvelID  |  updatedate  |  bookname  |  part

반XX        ban            1                             2011-10-04     AL                     1

반XX        ban            1                             2011-10-05     AL                     1

반XX        ban            1                             2011-10-06     AL                     1

반XX        ban            1                             2011-10-07     AL                     1

 

이렇게 나옵니다 근데 이거를

 

name  |  userid |  ....  |  1   |   2   |   3   |   4   |   5   |   6   |   7   |   .................   |   31

반XX        ban                  0     0       0       0       1       1        1  

위에 데이터 같이 해당 월에 대한 일자별로 사용자 데이터를 출력하고싶습니다.

간단하게 달력쿼리와 레프트 조인을 걸어서 데이터를

 

출력하는 방법도 있긴한대 달력쿼리를 만들기가 쉽지 않내요.

 

혹시 방법 아시는분 이나 MS-SQL 달력쿼리 가지고 계신분 부탁드리겠습니다.

 

 

이 글에 대한 댓글이 총 2건 있습니다.
그냥 단순히 날자만 나오면 되는거면 이런식이면 될까요?
 
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
 
-- 날짜 출력할 시작일~ 미만일
SET @StartDate = '2010-01-01'
SET @EndDate = '2011-01-01'
 
;
WITH Calendar AS
(
       SELECT @StartDate AS Date
       UNION ALL
       SELECT Date + 1
       FROM Calendar
       WHERE Date < @EndDate
)
 
SELECT CONVERT(VARCHAR(10), Date, 121) AS Date
FROM Calendar
OPTION(MAXRECURSION 1000)

 

향지님이 2011-10-11 10:18에 작성한 댓글입니다. Edit

select name , Userid
 , SUM(CASE WHEN RIGHT(Updatedate,2) = '01' THEN Part ELSE 0 END) AS Col01
 , SUM(CASE WHEN RIGHT(Updatedate,2) = '02' THEN Part ELSE 0 END) AS Col02
 , SUM(CASE WHEN RIGHT(Updatedate,2) = '03' THEN Part ELSE 0 END) AS Col03
 , SUM(CASE WHEN RIGHT(Updatedate,2) = '04' THEN Part ELSE 0 END) AS Col04
 , SUM(CASE WHEN RIGHT(Updatedate,2) = '05' THEN Part ELSE 0 END) AS Col05
 , ...
 , SUM(CASE WHEN RIGHT(Updatedate,2) = '31' THEN Part ELSE 0 END) AS Col31
  FROM Test
 GROUP BY Name, userID

- 이런식으로 세로를 가로로 바꿔면 굳이 달력쿼리 없어서 가능할듯 싶은데요..

도움이 되셨길..

 

 

착한넘(agoodman99)님이 2011-10-11 12:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5962오라클의 v$parameter와 같은 기능 [1]
된동이
2011-10-13
6127
5961group by 사용...? [1]
초보임돠
2011-10-11
5972
5960질문 하나만 더올릴게요 ㅠㅠ
송기백
2011-10-08
6116
5959쿼리 질문입니다 고수님들 도와주세요 [2]
송기백
2011-10-07
6819
5956GROUP BY 관련 질문입니다. [1]
최명근
2011-10-04
5729
5955sql 저장프로시져들만 백업 및 복원방법? [1]
있나없는거같은데
2011-10-01
9653
5954Query 질문 드립니다... [1]
쪼렙
2011-09-29
6482
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다