합계 필드 값이 이고 다른 값은 필드 값입니다. 이 used_points
또는 added_points
그리고 AS used_points/added_points
에 넣어 경우다른 열 값에 따라 열 합계
나는 activities.activity_type
에 따라 SUM(activities.points)
해야합니다.
표 활동 :
id | subscription_id | activity_type | points
--------------------------------------------------
1 | 1 | used_points | 10
2 | 1 | used_points | 50
3 | 1 | added_points | 20
4 | 1 | added_points | 30
5 | 2 | used_points | 20
6 | 2 | used_points | 45
7 | 2 | added_points | 45
8 | 2 | added_points | 45
표 구독 :
id | name | current_points
-------------------------------------
1 | card_1 | 700
2 | card_2 | 900
내가 필요로하는 무엇을 : 나는 시도 무엇
name | current_points | used_points | added_points
-----------------------------------------------------------
card_1 | 700 | 60 | 50
card_2 | 900 | 65 | 90
:
SELECT
subscriptions.name,
subscriptions.current_points,
IF(activities.activity_type="used_points", SUM(activities.points), null)
AS used_points,
IF(activities.activity_type="added_points", SUM(activities.points), null)
AS added_points
FROM activities
JOIN subscriptions
ON activities.subscription.id = subscription.id
GROUP BY subscriptions.name
잘못된 것입니다.
감사는 열과 합계 사항을 확인하거나 0
**'SUM (IF())'**를 사용하고 싶습니다. 즉,'IF' 표현식 안에서'SUM' 집계 함수를 제거하고'IF' 표현식을'SUM'에 랩핑하십시오. IF 표현식은 개별 행에 대해 작동해야하며, SUM은 각 행에 대해 리턴 된 값을 집계합니다. – spencer7593