我可以访问保存在 SQL 服务器数据库中的 JSON 数据。我想创建一个用于报告的数据模型。
这是我的数据现在的样子:
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Order_Id | JSON_Detail |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Order_1001 | {"Customer":"Mario","BillingNumber":"99","List_ABC_0":"475","List_ABC_1":"461","List_ABC_2":"940","List_Type_0":"N","List_Type_1":"D","List_Type_2":"N"} |
| Order_1002 | {"Customer":"Luigi","BillingNumber":"61","List_ABC_0":"182","List_Type_0":"N"} |
| Order_1003 | {"Customer":"Toad","BillingNumber":"03","List_ABC_0":"028","List_ABC_1":"283","List_Type_0":"D","List_Type_1":"D"} |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
使用 SSIS,我可以将其分解为带有 JSON 值字段的平面表。结果我得到了这个:
+------------+----------+---------------+------------+------------+------------+-------------+-------------+-------------+
| Order_Id | Customer | BillingNumber | List_ABC_0 | List_ABC_1 | List_ABC_2 | List_Type_0 | List_Type_1 | List_Type_2 |
+------------+----------+---------------+------------+------------+------------+-------------+-------------+-------------+
| Order_1001 | Mario | 99 | 475 | 461 | 940 | N | D | N |
| Order_1002 | Luigi | 61 | 182 | | | N | | |
| Order_1003 | Toad | 03 | 028 | 283 | | D | D | |
+------------+----------+---------------+------------+------------+------------+-------------+-------------+-------------+
现在这是我的问题,请注意 List_%_n 字段(ABC 和类型)。在我的示例中,我将其上限设置为 3,但我的真实数据可以有更多。
我想将每个列表类型组合成一个合并字段。我想要的最终结果是这样的:
*我添加了一个序列字段,对应于n
+------------+-----------+----------+---------------+-----+------+
| Order_Id | Sequence | Customer | BillingNumber | ABC | Type |
+------------+-----------+----------+---------------+-----+------+
| Order_1001 | 0 | Mario | 99 | 475 | N |
| Order_1001 | 1 | Mario | 99 | 461 | D |
| Order_1001 | 2 | Mario | 99 | 940 | N |
| Order_1002 | 0 | Luigi | 61 | 182 | N |
| Order_1003 | 0 | Toad | 03 | 028 | D |
| Order_1003 | 1 | Toad | 03 | 283 | D |
+------------+-----------+----------+---------------+-----+------+
如何从当前状态转到所需的输出?
SSIS 和 SQL Server 是我可以使用的工具。
我在服务器上有写访问权限(创建/更改表、视图、函数、存储过程等)。