簡體   English   中英

MySQL-如何將非唯一行轉換為列並保持完整性?

[英]MySQL - How to convert non-unique rows into columns and maintain integrity?

我想將此表轉換為另一種表,其中“賬單類型”行是兩個不同的列,一個用於實用程序,一個用於開銷。 我懷疑我必須在某個地方使用LIKE'Utilities%'。

tbl_charges

House ID  Account  AC Type    Date          Bill Type       Amount
---------------------------------------------------------------------
1        1        A        20170101      Overhead           40.00
1        1        A        20170101      Utilities @ Elec   15.50
---------------------------------------------------------------------
2        1        B        20170101      Overhead           35.00
2        1        B        20170101      Utilities @ Elec   25.50
---------------------------------------------------------------------
3        2        B        20170101      Overhead           42.00
3        2        B        20170101      Utilities @ Water  18.25
---------------------------------------------------------------------
1        1        A        20170301      Overhead           39.00
1        1        A        20170301      Utilities @ Elec   19.50
---------------------------------------------------------------------
4        4        A        20170201      Overhead           55.00
4        4        A        20170201      Utilities @ Water  17.25

我想將任何給定日期的兩個房屋ID行組合在一起,並且只有該行的一行與“開銷”在一列中,而“公用事業”在另一列中。 本質上,對於任何給定的房屋ID和日期,我只想要一行。 20170101行上的房屋ID 1的輸出應如下所示:

House ID  Account  AC Type    Date     Overhead  Utilities  Total Amount
1         1        A          20170101 40.00     15.50      55.50
 SELECT HouseId, Account, `AC Type`, Date, 
        MAX( CASE WHEN BillType = 'Overhead' THEN Amount END) as Overhead,
        MIN( CASE WHEN BillType LIKE  'Utilities%' THEN Amount END) as Utilities,
        SUM(Amount) as `Total Amount`
FROM YourTable
GROUP BY HouseId, Account, `AC Type`, Date 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM