我正在嘗試查找每個成員擁有的積分數量。兩個相關的表格是LESSON
和POINT
。我必須首先總結購買的積分,POINT.Point
,然後減去使用的積分,LESSON.LessonPoint
。這兩項操作自然必須使用GROUP BY MemberId
。SQL:從兩個不同的表中扣除SUM
我最初嘗試了以下查詢,但是它正在計算LESSON表中每個記錄的SUM。例如,如果購買的積分總和等於10,並且每次拿到五個1點的教訓,則結果將達到45.總和10減1點5次((10-1)* 5 = 45)。然而,追求的結果是5(購買的10分減去使用的5分)。 PIA =入帳。
SELECT P1.MemberId,SUM(P1.Point)-sum(L1.LessonPoint)AS PIA
從點P1 LEFT JOIN課L1 ON P1.MemberId = L1.MemberID GROUP BY P1.MemberId
ORDER BY P1.MemberId DESC
我只想計算每個SUM一次,所以我需要某種子查詢。然後我嘗試了下面的內容,但是我收到一條錯誤消息,說它不能識別SLP。 SLP =課程點數總和。
SELECT P1.MemberId,SUM(P1.Point)-SLP AS PIA從點P1 FULL JOIN 課L1 ON P1.MemberId = L1.MemberId GROUP BY P1.MemberId WHERE P1.MemberId IN(SELECT SUM(L1.LessonPoint)AS SLP從第一課L1 GROUP BY L1.MemberId)
然後我試圖打破的問題。但是,以下給出的結果與第一個查詢類似,因爲POINT.Point
的和是LESSON.LessonPoint
中對應於MemberId
的每個記錄計算的。
SELECT P1.MemberId,SUM(P1.Point),SUM(L1.LessonPoint)從點P1 FULL JOIN課L1 ON L1.MemberId = P1.MemberId GROUP BY L1.MemberId, P1.MemberId
我希望這個問題明確闡述。我已經達到了我的知識和能力的極限,請幫助。
你真棒! – Jeimuzu
爲了有類似問題的未來觀衆的利益,我調整了這個答案來解決NULL值。這裏是新的第一行:'SELECT ISNULL(L1.MemberId,P1.MemberId)AS MemberId,ISNULL(P1.p1sum,0) - ISNULL(L1.l1sum,0)as res_sum' – Jeimuzu