【问题标题】:How to get multiple columns from one column, SQL如何从一列中获取多列,SQL
【发布时间】:2020-08-27 13:39:03
【问题描述】:

我一直在寻找解决方案,我有以下SQL数据库:

| Date                  | Name          | Value |
|-----------------------|---------------|-------|
|  01-01-2020:12:00     |  sensor01     |   5   |
|  01-01-2020:13:00     |  sensor01     |   15  |
|  01-01-2020:14:00     |  sensor01     |   25  |
|  01-01-2020:12:00     |  sensor02     |   10  |
|  01-01-2020:13:00     |  sensor02     |   20  |
|  01-01-2020:14:00     |  sensor02     |   30  |

我想要做的是实际将来自 Name 列的数据分布在多个列中,其中 Values 在每列下都匹配。如下:

| Date                  | Sensor01      | Sensor02  |
|-----------------------|---------------|-----------|
|  01-01-2020:12:00     |  5            |   10      |
|  01-01-2020:13:00     |  15           |   20      |
|  01-01-2020:14:00     |  25           |   30      |

我尝试了几件事,包括:“PIVOT”功能和“when case”,但这并没有真正帮助,我仍然卡住了! 我怎样才能最好地做到这一点?应该使用哪些功能?

我仍然是初学者,因此非常感谢任何提示/想法/建议。

提前致谢!

【问题讨论】:

  • 那么,您希望它们按日期和时间分组吗?
  • 是的,非常感谢您,您的解决方案非常完美!你是最棒的:)

标签: mysql sql database datetime pivot


【解决方案1】:

使用条件聚合:

select
    date,
    max(case when name = 'sensor01' then value end) sensor01,
    max(case when name = 'sensor02' then value end) sensor02
from mytable
group by date

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 2017-07-20
    • 2020-12-06
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多