【问题标题】:SQL Combining multiple rows into one column [closed]SQL将多行组合成一列[关闭]
【发布时间】:2020-05-31 22:10:21
【问题描述】:

我正在尝试做的示例:

我正在考虑使用“案例”或数据透视表来帮助我组合这些列。假设第一个表称为“oldTable1”,新表可以称为“newTable1”。

谢谢!

【问题讨论】:

  • 是的,PIVOT 操作可以提供帮助 - 这基本上是“将值转置到列”。 PIVOT 语句也仅在某些 RDBMS 中可用(确保添加显式标记以进行实现)。另一种方法是具有聚合和 CASE 的 GROUP BY。另一个是多个联接(例如,每个联接都已按年份过滤)。
  • 请用您正在使用的数据库标记您的问题:mysql、oracle、postgresql...?
  • 考虑处理应用代码中数据显示的问题

标签: mysql group-by pivot


【解决方案1】:

您可以进行条件聚合。以下查询适用于大多数数据库:

select
    name,
    car,
    max(case when year = 2017 then miles_driven end) miles_driven_2017,
    max(case when year = 2018 then miles_driven end) miles_driven_2018,
    max(case when year = 2019 then miles_driven end) miles_driven_2019,
    max(case when year = 2020 then miles_driven end) miles_driven_2020
from mytable
group by name, car

如果每个 (name, car, year) 有多个行,您希望使用 sum() 而不是 max()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 2013-12-31
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2019-03-15
    • 1970-01-01
    相关资源
    最近更新 更多