2016-12-06 51 views
0

我正在嘗試創建一個視圖,該視圖顯示當月至今的所有滯納金,並且還會在結果底部累計滯納金。使用MySQL創建視圖中的總和列

這是我寫的,顯示的滯納金細節腳本:

select g.game_id, g.game_name, 
     if(datediff(r.return_date, r.due_date) > 0, 
      datediff(r.return_date, r.due_date) * g.overdue_charge_per_day, 
      0) as Total_Overdue_Charges_MTD  
from rental as r 
left join game as g 
on r.game_id = g.game_id 
where month(r.return_date)=month(now()) 

這給了我下面的輸出:

game_id game_name Total_Overdue_Charges_MTD  
    6  GTA V    4.00 
    7  Tony Hawk   15.00 

我命名這種觀點爲overduepaymentMTD。

我想什麼,輸出的樣子是

game_id game_name Total_Overdue_Charges_MTD Total  
    6  GTA V    4.00   19.00 
    7  Tony Hawk   15.00 

是否有包括視圖本身total_overdue_charges_MTD總和的一種方式?

+0

記住格式化你的問題,使其更加可變。 – Rahul

+0

對不起,以爲它會自動做到這一點 –

+1

我做到了。您需要縮進代碼四個空格。 –

回答

0

您可以輕鬆地插入到視圖中。它具有與插入到表中相同的語法。使用下面的查詢會幫你做你想做

insert into overduepaymentMTD(game_name,Total_Overdue_Charges_MTD) 
select "Total" as game_name,sum(if(datediff(r.return_date, r.due_date) > 0, datediff(r.return_date, r.due_date) * g.overdue_charge_per_day, 0))as Total_Overdue_Charges_MTD from rental as r left join game as g on r.game_id = g.game_id where month(r.return_date)=month(now()) 

來解決這個查詢game_id什麼,GAME_NAME必須有默認值或者你有值的查詢添加到他們。

+0

因此,我給出的只是逾期費用的總列,但我可以這樣做,但我需要詳細說明個別滯納金,並在您使用您在問題中編寫的查詢創建view overduepaymentMTD後的相同視圖 –

+0

中進行彙總,你必須執行我的查詢。之後,如果您從視圖中選擇*,則會收到個人滯納金的詳細信息,最後一行將爲| | sum_value – reza

+0

當我嘗試插入您的查詢時,我得到錯誤'插入的目標表overduepaymentMTD不可插入 - 到 –

0

我無法弄清楚如何做到這一點,而是創建了當月的過期費用視圖,然後總結了過期費用列。

相關問題