小编euc*_*ans的帖子

SQL - CASE WHEN - 转置后数据显示在单独的行上

我正在尝试将列数据转置为单独的列。(请注意,我不能使用 Pivot 函数或动态 SQL)。

源表具有三列(年份、城市、数据1)。

我正在尝试将“城市”列转置为单独的列,以便比较所选城市的数据。

这是我的代码:

SELECT  t.year, 
   CASE WHEN city = 'San Francisco' THEN t.data1 END) SF, 
   CASE WHEN city = 'Paris' THEN t.data1 END) PAR, 
   CASE WHEN city = 'New York' THEN t.data1 END) NYC
FROM t
WHERE city IN ('San Francisco', 'Paris', 'New York')
GROUP BY t.year, t.data1
ORDER BY t.year
Run Code Online (Sandbox Code Playgroud)

结果如下表。

输出

问题是“年”行重复了几次,而我希望将所有选定城市的数据显示在一个“年”行上。否则我无法绘制任何折线图。

任何帮助表示赞赏。

表输入示例:

+------+---------------+-------+
| year |     city      | data1 |
+------+---------------+-------+
| 2001 | San Francisco | 15.25 |
| 2001 | …
Run Code Online (Sandbox Code Playgroud)

sql transpose multiple-columns case-when

4
推荐指数
1
解决办法
3330
查看次数

标签 统计

case-when ×1

multiple-columns ×1

sql ×1

transpose ×1