1. ホーム
  2. sql

[解決済み] CASE条件とSUM()を含むSELECTクエリ

2022-03-11 02:55:09

質問

現在、以下のSQL文を使っています。私のテーブルには、"Cash" または "Check" を含む CPaymentType フィールドがあります。以下のように2つのSQLステートメントを実行することで、支払い金額を合計することができます。この場合、ユーザーは2つのSQL文を実行しても、1つのSQL文を実行しても、スピードの差に気づかないでしょう。しかし、私はこの方法が好きではなく、1つのSQL文が欲しいだけです。しかし、私はこの方法が好きではありません。このような場合、CASE条件を使ってどのように1つの文に再構築すればよいのでしょうか?後日小切手の支払いは含めないようにしたいのですが。ありがとうございました。

Select SUM(CAmount) as PaymentAmount 
from TableOrderPayment 
where CPaymentType='Cash' and CStatus='Active';

Select SUM(CAmount) as PaymentAmount 
from TableOrderPayment 
where CPaymentType='Check' and CDate<=SYSDATETIME() and CStatus='Active';

解決方法は?

Select SUM(CASE When CPayment='Cash' Then CAmount Else 0 End ) as CashPaymentAmount,
       SUM(CASE When CPayment='Check' Then CAmount Else 0 End ) as CheckPaymentAmount
from TableOrderPayment
Where ( CPayment='Cash' Or CPayment='Check' ) AND CDate<=SYSDATETIME() and CStatus='Active';