【问题标题】:AWS Redshift: columns into rows (wide to long)AWS Redshift:列成行(从宽到长)
【发布时间】:2018-08-04 00:35:00
【问题描述】:

我正在编写一个查询,其结果将在重划时显示为仪表板。查询基本上是特定时间范围内的几列表的总和:

SELECT
   sum(col_A),
   sum(col_B),
   sum(col_C)
FROM
   table_X
WHERE
   timestamp > '2018-01-01'
   AND timestamp < '2018-02-01'

结果是这样的:

col_A    col_B    col_C    
123      456      789

但是,为了正确渲染仪表板,我需要长格式的结果:

column   sum
col_A    123
col_B    456
col_C    789

如何将结果从宽格式转换为长格式?

【问题讨论】:

    标签: sql amazon-redshift redash


    【解决方案1】:

    一个简单的方法是使用union all:

    SELECT sum(col_A) FROM table_X WHERE timestamp > '2018-01-01' AND timestamp < '2018-02-01'
    UNION ALL
    SELECT sum(col_B) FROM table_X WHERE timestamp > '2018-01-01' AND timestamp < '2018-02-01'
    UNION ALL
    SELECT sum(col_C) FROM table_X WHERE timestamp > '2018-01-01' AND timestamp < '2018-02-01';
    

    您可能需要小心订购。我将包含第二列,指定正在聚合的内容。

    三个单独的查询并不像听起来那么糟糕。 Redshift 是一个列式数据库,因此只应读取列引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-19
      • 2022-01-22
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 2021-09-04
      相关资源
      最近更新 更多