我有三個表,即class_record,class_violation,violation。SQL查詢總和條件
表class_record有這些列和數據:
Class Violation CR No. | Class ID
000-000 | A30-000
000-001 | A30-000
表class_violation有這些列和數據:
Class Violation CR No. | Violation ID
000-000 | 2
000-000 | 1
000-001 | 2
000-001 | 4
000-001 | 3
表違反了這些列和數據:
Violation ID | First Amount | Second Amount
1 | 1000 | 2000
2 | 200 | 400
3 | 500 | 1000
4 | 500 | 1000
表class_record
包含班級記錄的信息。
表class_violation
是包含提交的違規事件的表。最後,表violation
包含有關違規的信息。
如果違規提交兩次,第二筆金額將被觸發而不是第一筆金額。正如您在表class_violation
,Violation ID
列中看到的那樣,編號2的違規ID被提交兩次。第二筆金額必須是扣款金額,而不是第一筆金額。因此,如果提交兩次,總收費金額將是第一筆金額加上第二筆金額。我的問題是,如何獲得第二筆金額而不是第一筆金額,並獲得所承諾違規的總金額?到目前爲止,這裏是我的SQL查詢,但是非常錯誤:
SELECT SUM(`First Amount`)
FROM violation
WHERE `Violation ID`
IN (SELECT `Violation ID` FROM class_violation
WHERE `Class Violation No.`
IN (SELECT `Class Violation CR No.`
FROM class_record WHERE `Class ID` = 'A30-000'))
請幫幫我。對不起我的英語不好。查詢的結果必然是:
SUM
2600
這裏是我的sqlfiddle鏈接:http://sqlfiddle.com/#!2/2712a
你是怎麼得到2600的? –
「所以總收費金額將是第一筆金額加上第二筆金額,如果提交兩次」 - 第 – nextgtech
號問題中提及第一筆金額加上第二筆金額是600筆2600 –