이 질문은 내 이전 게시물과 관련이 있습니다. MySQL - Complicated SUMs inside QueryMySQL - 복잡 케이스/WHEN 조건 가능?
쿼리가 잘 작동하여 원하는만큼 총계를 합산합니다. NULL 값을 가진 레코드도 무시한다는 것을 알았습니다.
현재 쿼리가 아름답게 10 고객 레코드를 반환
SELECT c.*,
SUM(CASE WHEN billtype = 1 THEN total ELSE 0 END) totalpaid ,
SUM(CASE WHEN billtype = 2 THEN total ELSE 0 END) totalowed ,
SUM(total) AS totalbalance
FROM
tbl_customers c
LEFT JOIN tbl_customers_bills b
ON c.customerid = = b.customerid
and billtype in (1,2)
GROUP BY
c.customerid
합니다. 데이터베이스를 확인하면 고객 레코드를 볼 수 있으며 열한 번째 테이블에는 tbl_customers_bills
테이블에 상관 레코드가 없습니다.
tbl_customers_bills
테이블에 존재하지 않는 레코드가 있어도 여전히 11 개를 모두 반환하고 싶습니다. (하지만 0으로 끝납니다.)
그런 상황이 얼마나 복잡한 지 알 수 있습니다. 는 여기에 내가 무엇을 시도했다입니다 : (아무 소용이)
SELECT c.*,
(CASE WHEN (total IS NULL) THEN totalpaid = 0
ELSE
SUM(CASE WHEN billtype = 1 THEN total ELSE 0 END) totalpaid ,
SUM(CASE WHEN billtype = 2 THEN total ELSE 0 END) totalowed ,
SUM(total) AS totalbalance
END)
FROM
tbl_customers c
LEFT JOIN tbl_customers_bills b
ON c.customerid = = b.customerid
and billtype in (1,2)
GROUP BY
c.customerid
당신이 우리에게 말하고 있지 않은 'WHERE' 조건이 있습니까? –
'billtype'은 어느 테이블에 속합니까? –
그리고 왜'='뿐만 아니라'= ='을 가지고 있습니까? –