0

まず、私の質問や他の人たちにご協力いただき、ありがとうございました。

私はMSSQL2008 R2を持っていて、次のように2つの列の合計を取得していました。

SELECT SUM(RATE+RATE_ADDITIONAL) FROM LOADS WHERE INVOICED=1 
and NOT OV_FACTORING=2 and DATE_INVOICED >= '1/1/2007' 
and DATE_INVOICED <= '5/1/2012'

しかし、私がこのように試してみると:

SELECT SUM(RATE+RATE_ADDITIONAL) FROM LOADS WHERE INVOICED=1 
AND OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5 
and DATE_INVOICED >= '1/1/2007' and DATE_INVOICED <= '5/1/2012'

OV_FACTORINGでは、値は2、3、4、および5のみであるため、同じである必要がある場合は、合計が異なります。

LOAD_NOという名前の列があり、他のクエリで異なるまたは存在しないLOAD_NOを取得したいので、2つのクエリを比較して、異なるか、クエリの1つに表示されるload_noを出力します。もう一方にはありません。

サイトでいくつかの例を試しましたが、機能させることができません。

繰り返しになりますが、すべてのご協力に感謝します...

4

4 に答える 4

2

OV_FACTORINGを制限する場合は、次のように実行できます。

SELECT OV_FACTORING, SUM(RATE+RATE_ADDITIONAL) 
  FROM dbo.LOADS 
  WHERE INVOICED = 1
  AND OV_FACTORING IN (3,4,5)
  AND DATE_INVOICED >= '20070101' 
  AND DATE_INVOICED <= '20120501'
  GROUP BY OV_FACTORING;

ORまたは、本当にステートメントが必要な場合。次に、これを行うことができます:

SELECT OV_FACTORING, SUM(RATE+RATE_ADDITIONAL) 
  FROM dbo.LOADS 
  WHERE INVOICED = 1
  AND (OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5)
  AND DATE_INVOICED >= '20070101' 
  AND DATE_INVOICED <= '20120501'
  GROUP BY OV_FACTORING;
于 2012-05-02T13:35:35.977 に答える
1
SELECT SUM(RATE+RATE_ADDITIONAL) 
FROM LOADS 
WHERE INVOICED=1 
AND (OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5) 
AND DATE_INVOICED >= '1/1/2007' 
AND DATE_INVOICED <= '5/1/2012
于 2012-05-02T13:36:41.953 に答える
1

表の数値が正確であることを確認するには、次の結果を確認してください。

SELECT OV_FACTORING, SUM(RATE+RATE_ADDITIONAL) 
  FROM dbo.LOADS 
  WHERE INVOICED = 1
  AND DATE_INVOICED >= '20070101' 
  AND DATE_INVOICED <= '20120501'
  GROUP BY OV_FACTORING;

問題に関係のないいくつかの一般的なコメント:

  • キャリッジリターンとインデントにより、クエリが100倍読みやすくなります
  • 日付に地域形式を使用しないでください-2012年5月1日は5月1日ですか、それとも1月5日ですか?(ブログ投稿
  • クエリのスキーマプレフィックスを指定します(ブログ投稿
于 2012-05-02T13:34:23.430 に答える
1

OV_FACTORING同じ結果を得るには、次のようにフィルターを一緒に分離する必要があります。

SELECT SUM(RATE+RATE_ADDITIONAL) 
FROM LOADS WHERE INVOICED=1 AND 
(OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5) AND 
DATE_INVOICED >= '1/1/2007' AND DATE_INVOICED <= '5/1/2012'
于 2012-05-02T13:36:12.533 に答える