【问题标题】:Pivot with Label Column (U-SQL or SQL) [closed]使用标签列进行透视(U-SQL 或 SQL)[关闭]
【发布时间】:2020-08-19 22:26:20
【问题描述】:

我正在尝试将列列表转换为单个列中的行(我将其称为“预测”),但有一个指示列指出该值来自哪个列。

这是数据当前的样子:

这是我想要的样子:

【问题讨论】:

  • 请向我们展示您的尝试。
  • 请将数据添加为格式化文本不是图像。它占用的空间更少,更易于阅读,最重要的是允许我们将其复制粘贴出来进行测试。最好提供 DDL/DML 来创建示例数据。

标签: sql sql-server tsql unpivot u-sql


【解决方案1】:

您可以使用横向连接将列取消透视到行,同时跟踪原始列:

select t.productID, x.*
from mytable t
cross apply (values 
    (period1, 1), (period2, 2), (period3, 3)
) as x(forecast, periodNum)
order by t.productID, x.periodNum

【讨论】:

    【解决方案2】:

    好的,我通过使用 UNPIVOT 解决了这个问题! (仅供参考,在 U-SQL 中使用 Cross Apply 比在普通 SQL 中更复杂,所以我最终没有使用那种方法)

    我在 U-SQL 中的语法如下所示:

    @a = SELECT DISTINCT
    ProductID
    ,Lag
    ,Forecast
    FROM [my table] AS t
    UNPIVOT
    (
    Forecast FOR Lag IN (PERIOD1,PERIOD2,PERIOD3)
    ) AS Unpvt
    ORDER BY ColumnName
    FETCH 50 ROWS;
    
    
    OUTPUT @a
    TO "/outputlocation.tsv"
    USING Outputters.Tsv(outputHeader:true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2017-09-21
      • 1970-01-01
      • 2017-02-12
      相关资源
      最近更新 更多