sql - 尝试 SQL 动态反透视时如何解决错误
问题描述
你能帮忙看看我的错误吗?
原表:
目标表:
使用以下代码:
Select DATE,cities,sales
From Test
UNPIVOT
( sales
For cities in (city1, city2, city3)
) AS XYZ
结果是成功的。
但是,城市列表可能会变成 city4、city5 ......所以我试图使用动态 unpivot 来实现这一点
代码:
DECLARE @cols AS NVARCHAR(MAX);
select @cols = COALESCE(@cols + ',', '') + quotename(COLUMN_NAME)
From ( Select column_name
FROM information_schema.columns
WHERE table_name = 'Test'
AND COLUMN_NAME <> 'Date' ) AS FiledList
Select DATE,cities,sales
From Test
UNPIVOT
( sales
For cities in (@cols)
) AS XYZ
似乎有错误,并尝试了几种方法,均无效。
解决方案
您可能需要考虑更改数据库,以便首先对其进行透视。一个包含日期、城市和销售额的表格将更适合添加城市,并且首先不需要取消透视,假设您正在这样做启用聚合。否则,您将需要动态创建 SQL,这远非理想。
推荐阅读
- python - 为什么在尝试绘制散点图时会出现 KeyError?
- python - 为什么我的 keras 模型总是预测相同的结果?
- c++ - 如何将链接列表传递给函数
- c - Go 的系统调用和 C 的 stat.h 中定义的常量之间的区别
- angularjs - 如何使用 ng-repeat 在表格中显示数组
- mysql - 有没有办法计算 MySQL 中每行的 LIKE 结果?
- r - 如何在 R 中修复此交叉验证错误
- python - 矩阵的 Freebenius 距离矩阵
- c - 使用 fgets() 从文件中读取字符时出现设备错误的非法 ioctl
- python - 如何每天自动创建数千个任务