使用标签列进行透视(U-SQL 或 SQL)[关闭]
Posted
技术标签:
【中文标题】使用标签列进行透视(U-SQL 或 SQL)[关闭]【英文标题】:Pivot with Label Column (U-SQL or SQL) [closed] 【发布时间】:2020-08-19 22:26:20 【问题描述】:我正在尝试将列列表转换为单个列中的行(我将其称为“预测”),但有一个指示列指出该值来自哪个列。
这是数据当前的样子:
这是我想要的样子:
【问题讨论】:
请向我们展示您的尝试。 请将数据添加为格式化文本不是图像。它占用的空间更少,更易于阅读,最重要的是允许我们将其复制粘贴出来进行测试。最好提供 DDL/DML 来创建示例数据。 【参考方案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);
【讨论】:
以上是关于使用标签列进行透视(U-SQL 或 SQL)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章