在同一个查询中使用 UNPIVOT 两次
Using UNPIVOT twice in the same query
您好,我 运行 遇到以下问题:
我有一个 table 大约有 1600 行,其结构如下:
StoreID | Target1 | Target2 | Target3 | Date1 | Date2 | Date3
101 | X | Y | Z | 01-01-2021 | 02-01-2021 | 03-01-2021
我想运行把这个table变成
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 个日期。
有什么方法可以同时明显地取消旋转两列?
你最好使用 VALUES
table 构造:
SELECT YT.StoreID,
V.Target,
V.TargetDate
FROM dbo.YourTable YT
CROSS APPLY (VALUES(Target1, Date1),
(Target2, Date2),
(Target3, Date3))V(Target,TargetDate);
您好,我 运行 遇到以下问题:
我有一个 table 大约有 1600 行,其结构如下:
StoreID | Target1 | Target2 | Target3 | Date1 | Date2 | Date3
101 | X | Y | Z | 01-01-2021 | 02-01-2021 | 03-01-2021
我想运行把这个table变成
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 个日期。 有什么方法可以同时明显地取消旋转两列?
你最好使用 VALUES
table 构造:
SELECT YT.StoreID,
V.Target,
V.TargetDate
FROM dbo.YourTable YT
CROSS APPLY (VALUES(Target1, Date1),
(Target2, Date2),
(Target3, Date3))V(Target,TargetDate);