2013-01-03 40 views
0

我有一個基於「結束日期」選擇運行的查詢。基本上,用戶選擇結束日期,查詢將根據結束日期運行整個YTD的報告。例如,如果我選擇「12/3/12」,它應該從2012年1月1日 - 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

你的意思是你試着用''2012-12-03''替換'getdate()'? –

回答

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

相關問題