如何(取消)将多个指标转换为单个列?
Posted
技术标签:
【中文标题】如何(取消)将多个指标转换为单个列?【英文标题】:How to (un)pivot multiple metrics to a single column? 【发布时间】:2021-11-27 17:54:24 【问题描述】:我有一个宽表,其中包含值为 1 或 null 的各种指标。如何使用 pivot 转换初始表,以便将每个 transaction_id
分解为指标数量并将所有标志存储在单个列中?
当前表
| transaction_id | state | metric_1 | metric_2 | metric_3 |
| 10 | NY | 1 | null | 1 |
| 20 | CA | null | 1 | 1 |
预期表
| transaction_id | state | metric_name | flag |
| 10 | NY | metric_1 | 1 |
| 10 | NY | metric_2 | null |
| 10 | NY | metric_3 | 1 |
| 20 | CA | metric_1 | null |
| 20 | CA | metric_2 | 1 |
| 20 | CA | metric_3 | 1 |
【问题讨论】:
【参考方案1】:使用CROSS APPLY
是一种选择。
Select A.transaction_id
,A.state
,B.metric_name
,B.flag
From YourTable A
Cross Apply ( values ('metric_1',metric_1)
,('metric_2',metric_2)
,('metric_3',metric_3)
) B(metric_name,flag)
【讨论】:
以上是关于如何(取消)将多个指标转换为单个列?的主要内容,如果未能解决你的问题,请参考以下文章
如何将单个工作表中的多行(在 excel 中)转换为多个 CSV 文件
如何将数据从多个输入字段转换为单个 JSON 对象以进一步将其插入单个 mysql 字段