在同一个查询中两次使用 UNPIVOT
Posted
技术标签:
【中文标题】在同一个查询中两次使用 UNPIVOT【英文标题】:Using UNPIVOT twice in the same query 【发布时间】:2022-01-18 16:49:42 【问题描述】:您好,我遇到了以下问题:
我有一个大约 1600 行的表,其结构如下:
StoreID | Target1 | Target2 | Target3 | Date1 | Date2 | Date3
101 | X | Y | Z | 01-01-2021 | 02-01-2021 | 03-01-2021
我想把这张表改成
StoreID | Target | TargetDate
101 | X | 01-01-2021
101 | Y | 02-01-2021
101 | Z | 03-01-2021
我对 SQL 很陌生,但我的想法是将 UNPIVOT(Target1, Target2, Target3) 作为一列,将 UNPIVOT(Date1, Date2, Date3) 作为另一列。我相信这应该是可能的,因为两列的长度相同。
然而,许多努力都导致了相同的结果,我最终得到了太多行,因为每个目标最终都有 3 个日期。 有什么方法可以同时明确地取消旋转两列?
【问题讨论】:
这能回答你的问题吗? SQL Server unpivot multiple columns 【参考方案1】:最好使用VALUES
表结构:
SELECT YT.StoreID,
V.Target,
V.TargetDate
FROM dbo.YourTable YT
CROSS APPLY (VALUES(Target1, Date1),
(Target2, Date2),
(Target3, Date3))V(Target,TargetDate);
【讨论】:
以上是关于在同一个查询中两次使用 UNPIVOT的主要内容,如果未能解决你的问题,请参考以下文章