我有一个表,我正在使用数据库视图(使用 SQL Server)进行转置。该表有正值和负值。所有负值都返回为零。关于如何纠正这个问题的任何想法?
我的原始表格示例:
年 | 高峰 | 值_A | 值_B |
---|---|---|---|
2016 | 上午 | 15.156546 | 51.265146 |
2018 | 上午 | -15.5998 | -14.1565 |
2028 | 上午 | 16.3216 | 18.5611 |
2016 | 知识产权 | -0.01656 | -0.0026554 |
2018 | 知识产权 | -0.00159 | -0.59874 |
2028 | 知识产权 | 1.98438 | 3.362498 |
2016 | 下午 | -5.65436 | 8.6951 |
2018 | 下午 | 2.2316 | 3.859117 |
2028 | 下午 | -3.99842 | -9.620148 |
我的转置视图的结果:
高峰 | Value_A_2016 | Value_A_2018 | Value_A_2028 | Value_B_2016 | Value_B_2018 | Value_B_2028 |
---|---|---|---|---|---|---|
上午 | 15.156546 | 0 | 16.3216 | 51.265146 | 0 | 18.5611 |
知识产权 | 0 | 0 | 1.98438 | 0 | 0 | 3.362498 |
下午 | 0 | 2.2316 | 0 | 8.6951 | 3.859117 | 0 |
这是视图的 SQL 脚本:
SELECT Peak, MAX(CASE WHEN T .YEAR = 2016 THEN T .[Value_A] ELSE 0.00 END) AS Value_A_2016,
MAX(CASE WHEN T .YEAR = 2018 THEN T .[Value_A] ELSE 0.00 END) AS Value_A_2018,
MAX(CASE WHEN T .YEAR = 2028 THEN T .[Value_A] ELSE 0.00 END) AS Value_A_2028,
MAX(CASE WHEN T .YEAR = 2016 THEN T .[Value_B] ELSE 0.00 END) AS Value_B_2016,
MAX(CASE WHEN T .YEAR = 2018 THEN T .[Value_B] ELSE 0.00 END) AS Value_B_2018,
MAX(CASE WHEN T .YEAR = 2028 THEN T .[Value_B] ELSE 0.00 END) AS Value_B_2028
FROM gisadmin.Table_1 AS T
GROUP BY Peak
非常感谢您对此的任何帮助。