我目前正在使用 SQL Server 数据库,并面临着数据转换的挑战。数据结构要求我在将其移动到暂存区域之前先取消旋转多个列。
我尝试使用 SSIS 来完成此任务。虽然我知道 SSIS 可以处理逆透视,但这个过程似乎很麻烦,因为我必须手动指定每个目标列,并且涉及这么多列,手动编写所有列变得不可行。
我最初考虑使用 T-SQL 进行逆透视,但我的 SSIS 包并没有按照我预期的方式直接执行 T-SQL 脚本。
我读到可能有一种方法可以在 SSIS 中利用 C# 来更有效地处理此类转换。这是真的吗?或者,您是否会推荐任何其他工具或方法来在 SQL Server 环境中有效处理此类数据转换(可能仍在使用 SSIS)?
示例:
原始数据
猫格里 | 项目1 | 项目2 |
---|---|---|
一个 | 两个 | 三 |
未透视数据-
猫格里 | 项目 | 价值 |
---|---|---|
一个 | 项目1 | 拖车 |
一个 | 项目2 | 三 |
我不想手动编写 Unpivoted 列名称,我有超过 300 个项目。
任何类似经历的提示或例子将不胜感激。谢谢!
这是一个使用一些 JSON 的示例(假设 2016 年以上)。 请注意,我们只需过滤列
LIKE 'ITEM%'
Select A.ID
,A.FirstName
,A.LastName
,Item = B.[key]
,Value = B.Value
,A.CategoryID
,A.LocationID
From YourTable A
Cross Apply ( Select *
From OpenJson((Select A.* For JSON Path,Without_Array_Wrapper ))
Where [Key] like 'Item%'
) B