【问题标题】:How to PIVOT table in sql server using stored procedure?如何使用存储过程在 sql server 中 PIVOT 表?
【发布时间】:2020-11-10 13:49:14
【问题描述】:
My Stg table looks like,
Com_key  metric_name  metric_value  metric_date
   A        bugs           1        2020-06-09T16:26:41+0000
   A        bugs           1        2020-06-09T16:31:55+0000
   B        bugs           0        2020-06-18T13:59:28+0000
   B        bugs           1        2020-06-18T14:11:13+0000
   C        bugs           1        2020-06-15T14:27:32+0000
My fact table should look like,

com_key    bugs_cnt   metric_date
   A           1      2020-06-09T16:31:55+0000  
   B           0      2020-06-18T13:59:28+0000
   B           1      2020-06-18T14:11:13+0000
   C           1      2020-06-15T14:27:32+0000

我需要为下面解释的场景编写一个存储过程到 sql server 中的 PIVOT 表。 当同一天出现重复记录时,我只需要考虑最后修改日期。在上面的示例中,com_key A 有一条重复记录,具有相同的 metric_date 和不同的时间,我只需要考虑最新更新的值,但同时需要保留 com_keys 与同一天出现的不同度量值不同的时间。

提前致谢。

【问题讨论】:

  • 欢迎来到stackoverflow!您的问题似乎可以解决,但除非您在问题中发布您的实际 SQL,否则我们无法确定。

标签: sql sql-server pivot-table


【解决方案1】:

什么支点?这看起来像过滤:

select Com_key, metric_name, metric_value, max(metric_date) as metric_date
from (select t.*,
             row_number() over (partition by Com_key, metric_name, metric_value, convert(date, metric_date) order by metric_date desc) as seqnum
      from t
     ) t
where seqnum = 1;

我也强烈反对将其放入存储过程中。如果你想把它存储为代码,一个视图就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多