【问题标题】:group rows into columns with sum [duplicate]用总和将行分组为列[重复]
【发布时间】:2016-04-09 10:21:54
【问题描述】:

假设我们有这张桌子:

CREATE TABLE `table1` (
`Name` CHAR(50) NOT NULL,
`Type` CHAR(50) NOT NULL,
`Value` DOUBLE NOT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;


 ---------------------------------
|   Name   |   Type   |   Value   | 
 ---------------------------------   
|   Dep1   |   Cash   |   100     | 
 ---------------------------------  
|   Dep1   |   Card   |   200     | 
 ---------------------------------  
|   Dep2   |   Cash   |   300     | 
 ---------------------------------  
|   Dep2   |   Card   |   400     | 
 ---------------------------------

如何创建一个 MySQL 选择查询来像这样转换列中的行? 我必须提到“名称”列具有动态值!

 --------------------------------
|   Name   |   Cash   |   Card   |    
 --------------------------------   
|   Dep1   |    100   |    200   |     
 --------------------------------   
|   Dep2   |    300   |    400   |
 --------------------------------  

【问题讨论】:

    标签: mysql group-by sum


    【解决方案1】:
    select name, 
           sum(case when `type` = 'Cash' then `value` else 0 end) as Cash,
           sum(case when `type` = 'Card' then `value` else 0 end) as Card
    from your_table
    group by name
    

    【讨论】:

    • 谢谢juergen d,它成功了!!!
    猜你喜欢
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2017-05-31
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多