【问题标题】:Consult the same table with filter value over partition使用分区上的过滤器值查询同一张表
【发布时间】:2021-04-12 09:18:24
【问题描述】:

我怎样才能得到这个结果。我原来的表:

   Date     | Enterprise | Indicator |   Value
2020-01-01  |     1      |     1     |    12.50
2020-01-01  |     1      |     2     |  3000.00
2020-01-01  |     1      |     3     |   100.00
2020-01-02  |     2      |     1     |    13.20
2020-01-02  |     2      |     2     |  1300.03
2020-01-02  |     2      |     3     |   140.00
2020-01-03  |     3      |     1     |    13.50
2020-01-03  |     3      |     2     |  2300.00
2020-01-03  |     3      |     3     |   200.00

关于日期和企业的其余指标,我需要扩展指标 2 的值

   Date     | Enterprise | Indicator |   Value   |  Result
2020-01-01  |     1      |     1     |    12.50  |  3000.00
2020-01-01  |     1      |     2     |  3000.00  |  3000.00
2020-01-01  |     1      |     3     |   100.00  |  3000.00
2020-01-02  |     2      |     1     |    13.20  |  1300.00
2020-01-02  |     2      |     2     |  1300.00  |  1300.00
2020-01-02  |     2      |     3     |   140.00  |  1300.00
2020-01-03  |     3      |     1     |    13.50  |  2300.00
2020-01-03  |     3      |     2     |  2300.00  |  2300.00
2020-01-03  |     3      |     3     |   200.00  |  2300.00

问候社区。​​p>

【问题讨论】:

    标签: sql database select datatable


    【解决方案1】:

    我需要为其余指标扩展指标 2 的值 尊重日期和企业

    您可以使用按日期和企业划分的分析功能如下:

    select t.*,
           max(case when indicator = 2 then value end) over (partition by date, enterprise) as Result
    from your_table t;
    

    【讨论】:

      【解决方案2】:

      您可以将条件聚合用作窗口函数:

      select t.*,
             max(case when indicator = 2 then value end) over (partition by date) as result
      from t;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-07
        • 2020-11-29
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多