DECLARE @ORGID VARCHAR(50),
@WDATE1 VARCHAR(50),
@WDATE2 VARCHAR(50)
SET @ORGID = 'E0583'
SET @WDATE1 = '20100721'
SET @WDATE2 = '20100728'
SELECT DISTINCT A.ORGNAME AS 학교명,
A.STARTDATE AS 서비스시작일,
(SELECT COUNT(*) FROM TB_MEMBER WITH(INDEX(IX_TB_MEMBER_ORGID))
WHERE ORGID = A.ORGID AND SVCSTAT_CD IN(1)) AS 전체사용자,
(SELECT COUNT(*) FROM TB_ATTEND WITH(INDEX(IX_TB_ATTEND))
WHERE ORGID = A.ORGID AND ATNDIDX = 'A'
AND DATENAME(HOUR,TAGTIME) BETWEEN 06 AND 10
AND CONVERT(CHAR(8),WDATE,112) = CONVERT(CHAR(8),GETDATE(),112)) AS 출석자,
LEFT(CONVERT(float,(SELECT COUNT(*) FROM TB_ATTEND WITH(INDEX(IX_TB_ATTEND))
WHERE ORGID = A.ORGID AND ATNDIDX = 'A'
AND DATENAME(HOUR,TAGTIME) BETWEEN 06 AND 10
AND CONVERT(CHAR(8),WDATE,112) = CONVERT(CHAR(8),GETDATE(),112)) * 100 / CONVERT(float,(SELECT COUNT(*) FROM TB_MEMBER WITH(INDEX(IX_TB_MEMBER_ORGID))
WHERE ORGID = A.ORGID AND SVCSTAT_CD IN(1)))),4) as 출석률, CONVERT(CHAR(8),B.WDATE,112) AS 날짜
FROM TB_ORGAN A
JOIN ANYCARE.dbo.TB_ATTEND_201007 B
ON LEFT(B.ORGID,5) + '000' = A.ORGMEM
WHERE CONVERT(CHAR(8),B.WDATE,112) between @WDATE1 AND @WDATE2
AND A.ORGID = @ORGID
날자를 넣어서 출석률을 각 날짜마다 검색하고싶은데 쉽지가 않네요
날짜를 비트윈을 하니 날자만 몇일~몇일까지만 나오지 각 그 몇일에 해당하는 출석률이라든지 출석자가 나오지않네요;;
위의 쿼리문장의 결과는
학교명--서비스시작일--전체사용자--출석자--출석률--날짜
대구동도초등학교 --20100703 --156-- 9 --5.76 --20100723
대구동도초등학교 --20100703 --156 --9 --5.76 --20100722
대구동도초등학교 --20100703 --156 --9 --5.76 --20100726
대구동도초등학교 --20100703 --156 --9 --5.76 --20100727
대구동도초등학교 --20100703 --156 --9 --5.76-- 20100728
대구동도초등학교 --20100703 --156 --9 --5.76-- 20100721
다 다른날자에 값인데 출석률이라든지 출석자가 너무 같게나오네요;
처음 SELECT 시작할때 DISTINCT 을 사용해서 나중에 날짜를 정렬이 안되네요 ORDER BY CONVERT(CHAR(8),A.WDATE,112) DESC
날자를 낮은순으로 정렬을 해야하는데 어렵네요 쿼리 ㅠㅠ
|