2015-11-21 31 views
-1

我試圖計算到期金額表i_payment_history則比較總結果總結和分組更多的金額「to_be_payed」保存在表pt_bookings量。所有涉及的領域是十進制(8,2),我試着與CastCasouse沒有不工作的eather。值「由於」是「to_be_payed」只是結果 - 「所許」 所以在列「由於」的第一個值應該是755,10-200,00 = 535,10。 爲什麼「到期」計算錯誤值?發送!怎麼投別名

SELECT i_payments_history.booking_id, Cast(SUM(amount)AS DECIMAL(8,2)) as payed, pt_bookings.booking_total, pt_bookings.booking_ref_no, (pt_bookings.booking_total - payed) as due 
FROM `i_payments_history` 
JOIN pt_bookings 
on pt_bookings.booking_id= i_payments_history.booking_id  
GROUP BY booking_id 

看到下面的圖是什麼查詢返回

enter image description here

+2

'pay'是不規則動詞,所以'pay' - >'paid',不'payed'。 – dasblinkenlight

回答

2

重複表達:

SELECT ph.booking_id, Cast(SUM(ph.amount) AS DECIMAL(8,2)) as payed, b.booking_total, b.booking_ref_no, 
     (b.booking_total - SUM(ph.amount)) as due 
FROM `i_payments_history` ph JOIN 
    pt_bookings b 
    on b.booking_id = ph.booking_id  
GROUP BY b.booking_id; 

別名不能在它的定義相同select使用。一種選擇是使用子查詢;另一種是重複表達。您的查詢沒有返回錯誤,因爲您的某個表必須具有名爲payed的列。

+0

Txs Gordon解決了這個問題 – papacico

相關問題