2013-01-03 3 views
0

"종료 날짜"를 기준으로 실행되는 쿼리가 있습니다. 본질적으로 사용자는 종료 날짜를 선택하고 쿼리는 종료 날짜를 기준으로 전체 YTD에 대한 보고서를 실행합니다. 예를 들어 "12/3/12"를 선택하면 1/1/12 - 12/3/12부터 보고서를 실행해야합니다. 이것은 당신이 하루에 그것을 실행하면 작동 ... 오늘은 "12/31/12"에 대한 종료 날짜를 실행하려고했지만 오늘 날짜를 기반으로 시작 날짜를 얻으려고 생각하기 때문에 나는 아무 결과도 반환하지 않습니까?종료 날짜를 기준으로 연도 별 날짜에 대한 쿼리를 실행하는 방법

SELECT  Store_Number, COUNT(DISTINCT Customer_Email_Address) AS Customer_email_address, COUNT(DISTINCT Invoice_Number) AS [Total Cars], 
         @enddate AS End_Date, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS Start_Date 
FROM   Invoice_Tb 
WHERE  (Invoice_Date BETWEEN DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AND CONVERT(Datetime, @enddate, 102)) 
GROUP BY Store_Number 
+0

'getdate()'를'''122-12-03 ''으로 바꾸려고 했습니까? –

답변

4

@enddate 매개 변수와 함께 GetDate()를 교체하고 작동한다 :

SELECT   
    Store_Number, 
    COUNT(DISTINCT Customer_Email_Address) AS Customer_email_address, 
    COUNT(DISTINCT Invoice_Number) AS [Total Cars], 
    @enddate AS End_Date, 
    DATEADD(yy, DATEDIFF(yy, 0, @enddate), 0) AS Start_Date 
FROM Invoice_Tb 
WHERE (Invoice_Date BETWEEN DATEADD(yy, DATEDIFF(yy, 0, @enddate), 0) 
        AND CONVERT(Datetime, @enddate, 102)) 
GROUP BY Store_Number 

당신이 조회하는 경우 : 다음은 내 쿼리는

declare @enddate datetime = '12/31/2012' 

select DATEADD(yy, DATEDIFF(yy, 0, @enddate), 0) 

그것은 무엇 인 2012-01-01를 반환합니다 당신 필요.

+0

감사합니다! 이것은 완벽 해 – Shmewnix