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
4

1 に答える 1

4

をパラメータに置き換えるGetDate()と、機能するはずです。@enddate

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ます。

于 2013-01-03T17:51:06.433 に答える