2013-08-05 3 views
0

나는 한 달 동안 행 수 (distinct child_name)를 가져 오는 쿼리를 가지고 있습니다. 여러 달 동안 총을 다시 가져올 수 있도록 쿼리를 작성하고 싶습니다. 시간 범위를 선택하고 매달 하드 코딩하지 않고 자동 계산을 선택하는 범위에서 개월을 유지하고 싶습니다. 루프 및 시퀀스에 대한 정보를 읽었지만 이해하기가 어려웠습니다.시간별로 결정된 월별 계산

DECLARE @From_DT DATE = '2012-07-01', @To_DT DATE = '2013-7-30'; 

SELECT count(Child_Name) as July12_Count 
FROM ECMS_BACKUP.dbo.vw_B2H_CLIENTS 
WHERE CLT_NBR IN (SELECT CLT_NBR FROM ECMS_BACKUP.dbo.ufn_B2H_Enrolled_Clients_List(@From_DT, @To_DT)) 

아래와 같은 결과가 하드 코딩없이 나타나기를 바랍니다.

것은 내가 선택한다면 :

DECLARE @From_DT DATE = '2012-07-01', @To_DT DATE = '2013-10-31'; 

나는이 얻을 것이다 :

July12_Count Aug13_Count Sep13_Count Oct13_Count 

251   255   250   245 

모든 의견에 감사드립니다!

+0

확실하지 경우'ufn_B2H_Enrolled_Clients_List (@From_DT, @From_DT)'ufn_B2H_Enrolled_Clients_List (@From_DT, @To_DT가)'('에서의 변화를주의'해야 @ From_DT'에서 @To_DT'까지) –

+0

@Martin Parkin 예, From_DT에서 To_DT 여야합니다. 감사. – user2270911

+0

'@ From_DT'와'@ To_DT' 사이의 최대 시간 프레임은 얼마입니까? 1 년 미만입니까? 일부 사용자가 다음 매개 변수를 사용하여이 저장 프로 시저를 실행하면 어떻게됩니까? ''2012-01-01 ''& ''2013-0-30''? –

답변

1

vw_B2H_CLIENTS에있는 열 중 하나가 필터링 기준 날짜라고 가정해야합니다. 이 경우

, 당신은 지금, (당신의 날짜 열을 기준으로 DATE_COL 교체)를 월별로 그룹에 위해 DATEPART를 사용하여 시도 할 수 :

SELECT DATEPART(month, DATE_COL) AS Month, 
     COUNT(*) AS Count 
    FROM ECMS_BACKUP.dbo.vw_B2H_CLIENTS 
    WHERE CLT_NBR IN (SELECT CLT_NBR FROM ECMS_BACKUP.dbo.ufn_B2H_Enrolled_Clients_List(@From_DT, @To_DT)) 
    GROUP BY DATEPART(month, DATE_COL) 

은 또한이 같은 ufn_B2H_Enrolled_Clients_List에 오류가있을 수 있습니다 매개 변수로 @From_DT을 두 번 사용합니다 (@To_DT을 원할 수도 있음).

이 이런 식으로 출력을 줄 것이다 :

Month Count 
7  251 
8  255 
9  250 
10  245 
+0

대단히 감사합니다. 이 실행할 때 오류 메시지 : 207, 수준 16, 상태 1, 줄 8 'DATE_COL'잘못된 열 이름입니다. msg 207, 수준 16, 상태 1, 줄 4 'DATE_COL'열 이름이 잘못되었습니다. – user2270911

+0

제가 말했듯이, 당신이 :'DATE_COL을 당신의 날짜 컬럼으로 대체하십시오'. 따라서이 작업을 수행하려면'vw_B2H_CLIENTS' 테이블 \ view에서 필터링하는 날짜 열을 사용해야합니다. 대체 할'DATE_COL' 인스턴스가 두 개 있는데 (하나는'SELECT'에, 다른 하나는'GROUP BY'에 있습니다), 둘 다 얻어야합니다. –