2017-09-21 14 views
1

このMySQL Select Queryで3列の合計を取得しようとしていますが、結果が正しく取得できません。どのように合計を取得するか分かりません(Party1 + Party2 + Party3)MySQLの合計3列を取得する方法

私はそれぞれ独自の選択肢に分割しようとしましたが、結果はありません。

おかげ

SELECT 
sum(`InvoiceItem`.`qty`) AS `Quantity`, 
IF(sum(qty) < 4999, sum(qty) * 2500, sum(qty) * 5000) AS party1, 
IF(sum(qty) < 4999, sum(qty) * 2000, sum(qty) * 4000) AS party2, 
IF(sum(qty) < 4999, sum(qty) * 500, sum(qty) * 1000) AS party3 
    FROM `InvoiceItem` 
LEFT JOIN `Invoice` ON `InvoiceItem`.`parent` = `Invoice`.`name` 
LEFT JOIN `Ticket` ON `Invoice`.`wbt` = `Ticket`.`id` 
WHERE 
`InvoiceItem`.`status` = 1 
AND 
MONTH(posting_date) = MONTH(CURDATE()) -2 

//Result of Query above 
--------------------------------------------- 
Quantity | party1 | party2 | Party3 | Total = (Party1+Party2+Party3) 
--------------------------------------------- 
5000  | 1000 | 4000 | 5000 | ?? 
+2

は、サブクエリを使用してください。 –

+0

@ GordonLinoff私は何も戻って来なかった、エラーを持っていた – Said

+0

アプリケーションコードでの表示の問題(ピボットのような)を処理することを検討してください。 – Strawberry

答えて

3

これは動作するはずです:

SELECT sum(res.Quantity + res.party1 + res.party2 + res.party3) as total, 
res.Quantity, 
res.party1, 
res.party2, 
res.party3 
FROM (
SELECT 
sum(`InvoiceItem`.`qty`) AS `Quantity`, 
IF(sum(qty) < 4999, sum(qty) * 2500, sum(qty) * 5000) AS party1, 
IF(sum(qty) < 4999, sum(qty) * 2000, sum(qty) * 4000) AS party2, 
IF(sum(qty) < 4999, sum(qty) * 500, sum(qty) * 1000) AS party3 
    FROM `InvoiceItem` 
LEFT JOIN `Invoice` ON `InvoiceItem`.`parent` = `Invoice`.`name` 
LEFT JOIN `Ticket` ON `Invoice`.`wbt` = `Ticket`.`id` 
WHERE 
`InvoiceItem`.`status` = 1 
AND 
MONTH(posting_date) = MONTH(CURDATE()) -2 
) as res; 
+0

ありがとう、ありがとうございます。とても感謝している。よろしく – Said

関連する問題