SQL Serverに対して、私は基本的に年初来に基づいて値を計算しようとしているので、2012 年 7 月 16 日以前の値を合計して表示したいと考えています。次のクエリを使用しています (今日の値を計算するために、パラメーターを単純な整数に置き換えたことに注意してください)。
SELECT SUM(CASE
WHEN (
(
dns.ODAY <= 16
AND (dns.fiscalyear + 1) = 13
AND dns.omonth = 7
)
OR
(
(dns.fiscalyear + 1) = 13
AND dns.omonth < 7
)
)
THEN dns.QtyShipped
ELSE 0
END) AS Shipped_Units
FROM myTable dns
ただし、このクエリはすべての行に対して 0 を返しています。dns.QtyShipped を 1 などの整数に置き換えても、0 が返されます。したがって、case ステートメントが正しく評価されていないことは明らかです。私のロジックに欠陥がありますか?それとも構文の問題ですか (たとえば、もっと括弧が必要です)?
ありがとう!
追加コメント:
テストするために、次のクエリを実行しました。
SELECT SUM(dns.QtyShipped)
FROM myTable dns
where
(dns.ODAY <= 16
AND (dns.fiscalyear + 1) = 13
AND dns.omonth = 7)
OR
((dns.fiscalyear + 1) = 13
AND dns.omonth < 7)
これは非常に大きな数を返します。これは紛らわしいです。