[SQL] CASE 조건 및 SUM과 SELECT 쿼리 ()
SQLCASE 조건 및 SUM과 SELECT 쿼리 ()
나는 현재이 SQL 문을 사용하고 있습니다. 내 표는 "현금"또는 "확인"을 포함하는 필드 CPaymentType 있습니다. 나는 아래 그림과 같이 2 SQL 문을 실행하여 지불의 양을 요약 할 수 있습니다. 이 SQL 문하거나 1을 실행할 때 이런 경우, 사용자는하지만, 난 그냥 한 SQL 문을 원하는, 내 방식 좋아하지 않아, 속도 차이를 통지하지 않습니다. 어떻게 CASE 조건 1 문에이를 재구성합니까? 예 온라인 1 또는 0 또는 부울 결과 때문에 나는 그것을 알아낼 수 없습니다. 나는 날짜를 늦춰 확인 지불을 포함하지 않습니다. 대단히 감사합니다.
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';
해결법
-
==============================
1.
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';
-
==============================
2.
select CPaymentType, sum(CAmount) from TableOrderPayment where (CPaymentType = 'Cash' and CStatus = 'Active') or (CPaymentType = 'Check' and CDate <= bsysdatetime() abd CStatus = 'Active') group by CPaymentType
건배 -
-
==============================
3.별도의 열의 각 합계를 얻으려면 :
별도의 열의 각 합계를 얻으려면 :
Select SUM(IF(CPaymentType='Check', CAmount, 0)) as PaymentAmountCheck, SUM(IF(CPaymentType='Cash', CAmount, 0)) as PaymentAmountCash from TableOrderPayment where CPaymentType IN ('Check','Cash') and CDate<=SYSDATETIME() and CStatus='Active';
-
==============================
4.사용에 "또는"
사용에 "또는"
Select SUM(CAmount) as PaymentAmount from TableOrderPayment where (CPaymentType='Check' Or CPaymentType='Cash') and CDate <= case CPaymentType When 'Check' Then SYSDATETIME() else CDate End and CStatus='" & "Active" & "'"
또는 "IN"
Select SUM(CAmount) as PaymentAmount from TableOrderPayment where CPaymentType IN ('Check', 'Cash') and CDate <= case CPaymentType When 'Check' Then SYSDATETIME() else CDate End and CStatus='" & "Active" & "'"
-
==============================
5.난 당신이 경우 문을 필요가 있다고 생각하지 않습니다. 당신은 당신의 where 절을 업데이트해야하고 당신이 조항 그룹에 올바른 괄호를합니다.
난 당신이 경우 문을 필요가 있다고 생각하지 않습니다. 당신은 당신의 where 절을 업데이트해야하고 당신이 조항 그룹에 올바른 괄호를합니다.
SELECT Sum(CAMount) as PaymentAmount from TableOrderPayment where (CStatus = 'Active' AND CPaymentType = 'Cash') OR (CStatus = 'Active' and CPaymentType = 'Check' and CDate<=SYSDATETIME())
내 이전에 게시 한 응답에서는 CDate <= SYSDATETIME는 ()도 현금 지불 유형뿐만 아니라 적절한 것을 가정한다. 나는 단지 수표 지급이 절을 찾습니다 그래서 난 내를 분할 생각합니다.
from https://stackoverflow.com/questions/20935265/select-query-with-case-condition-and-sum by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 자료 10 변환을 사용하여 SQL 만에 자료 (36) (0) | 2020.06.08 |
---|---|
[SQL] 조건부 집계 성능 (0) | 2020.06.08 |
[SQL] LIKE 만 전체 단어 매치? (0) | 2020.06.08 |
[SQL] 비 "독특한"행을 선택하는 방법 (0) | 2020.06.08 |
[SQL] 오류 : 하나 개 이상의 수익률 쿼리에 대해 TypedQuery를 만들 수 없습니다 (0) | 2020.06.08 |