【问题标题】:SQL data over week_no into columns超过 week_no 的 SQL 数据进入列
【发布时间】:2016-06-27 12:35:28
【问题描述】:

我想转置以下 SQL 结果:

Asum  week_no
1      22
一个 2      24          

像这样进入表格:

Aweek_22week_23week_24
1&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp0 &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 2 &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 

如何在 Oracle 上实现这一点?谢谢! (我应该考虑多年来的每周数据,因此构建案例不是一种选择)

【问题讨论】:

  • 如果事先没有固定的列名集合,那么这是一种 SQL 反模式。在应用程序的表示层中转置/透视您的数据,而不是在数据库中。
  • 我的问题是我目前使用的软件 - Exasol,不支持枢轴功能,他们建议的唯一方法是多个 CASE WHEN 场景。

标签: sql exasolution


【解决方案1】:

大多数情况下,我假设对您的示例数据进行此查询,它将填补第几周的空白并透视结果集

Select A,[22] [week_22],[23] [week_23],[24] [week_24] from (
Select A,Sum,Weekno from Table 
UNION
Select * from ( 
SELECT  top 1 t1.A,'' AS Sum,t1.Weekno-1 AS Weekno
FROM     Table t1
LEFT OUTER JOIN 
         Table  t2 
ON       t2.Weekno=t1.Weekno-1 
WHERE    t2.Weekno IS NULL 
AND      t1.Weekno > 0     
ORDER BY t1.Weekno desc )T)TT
PIVOT (MAX(SUM) FOR WEEKNO IN ([22],[23],[24]))PVT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2011-12-15
    • 2011-04-12
    • 1970-01-01
    • 2011-02-28
    • 2012-04-01
    • 2015-12-03
    相关资源
    最近更新 更多