2012-04-18 24 views
-1

私はケース句で少し問題があります。問題はDueBeyondで終わる最後の部分にあります。私は今日から2日目のように、明日を越えて予定されている私たちの注文を返すために必要です。あまりにも明白なことを申し訳ありません。ケース句の一部が正しく動作しません

SUM(CASE WHEN CURRENT_TIMESTAMP > oi.RequiredByDate THEN 1 ELSE 0 END) as PastDue 
,SUM(CASE WHEN DATEADD(dd, DATEDIFF(dd, 0, oi.RequiredByDate), 0) = dateadd(day,  datediff(day, '19000101',CURRENT_TIMESTAMP),'19000102') then 1 ELSE 0 END) as DueTomorrow 
,SUM(CASE WHEN dbo.TruncateDate(CURRENT_TIMESTAMP) = dbo.TruncateDate(oi.RequiredByDate) THEN 1 Else 0 END) as DueToday 
,SUM(CASE WHEN DateDiff(day, getdate(), RequiredByDate) BETWEEN 2 and 7 AND DateName(weekday, RequiredByDate) = 'Monday' Then 1 ELSE 0 END) as DueMonday 
,SUM(CASE WHEN dbo.TruncateDate(CURRENT_TIMESTAMP) <= dbo.TruncateDate(oi.RequiredByDate) THEN 1 ELSE 0 END) as DueBeyond 
+0

問題が何ですか。いくつかのサンプル入力と期待/実際の出力は、この質問を答えるのに役立ちます。 –

+0

どのバージョンのSQL Serverですか? –

+0

データが不足して申し訳ありません。この – wondergoat77

答えて

0

あなたは現在の日付に2日追加し、それがまだ未満またはそれが将来的にはありませんすぐに2日以上でなければならないあなたに必要なの日付と等しいかどうかを確認します。

,SUM(CASE WHEN DATEADD(DAY, 2,dbo.TruncateDate(CURRENT_TIMESTAMP)) <= 
    dbo.TruncateDate(oi.RequiredByDate) THEN 1 ELSE 0 END) as DueBeyond 
+0

ありがとう、しかし今私は新しい問題がある、私はこれと同じデータを返す必要がある別のクエリがあります。これらのどちらかまたは両方が間違っていますが、私はそれを伝えません。教えてくれますか?クライアントとして – wondergoat77

+0

SELECT cl.Name、ClientBranch としてclb.Name、 \t CASE \t \t CURRENT_TIMESTAMP> oi.RequiredByDate THEN '過去起因' \t \t WHEN dbo.TruncateDate(CURRENT_TIMESTAMP)= dbo.TruncateDate(oi.RequiredByDate )THEN 'により今日 \t \t WHEN DATEADD(DD、DATEDIFF(DD、0、oi.RequiredByDate)「により、次いで、0)= DATEADD(日、DATEDIFF(日、 '19000101'、CURRENT_TIMESTAMP)、 '19000102')明日 ' \t \t日付デフ(日、getdate()、RequiredByDate)2日と7日とDateName(平日、RequiredByDate)=' Monday 'Then' Due Monday ' DATEADD(DAY、2、dbo.TruncateDate(CURRENT_TIMESTAMP))<= – wondergoat77

+0

dbo.TruncateDate(oi.RequiredByDate)THEN 'により超えて' ELSE \t \tがDeliveryStatus AS \t \t END '何かが、この報告書が間違っている'\t OrderItems FROM \t \t OIはO ON o.OrderID = oi.OrderID JOIN郡C ON c.FIPS = o.FIPS クライアントのJOIN CL ON cl.ClientID = o.ClientID M上のマイルストーンmをジョイン順に参加します。 MilestoneID = oi.LastMilestoneID JOIN製品p ON p.ProductID = oi.ProductID JOINベンダーv O N v.VendorID = oi.VendorID LEFTは、キューID> 0 – wondergoat77

関連する問題