sql - 将元组值转换为列名

标签 sql postgresql group-by pivot crosstab

有这样的东西:

+-------+------+-------+
| count |  id  | grade |
+-------+------+-------+
|     1 |    0 | A     |
|     2 |    0 | B     |
|     1 |    1 | F     |
|     3 |    1 | D     |
|     5 |    2 | B     |
|     1 |    2 | C     |

我需要:

+-----+---+----+---+---+---+
| id  | A | B  | C | D | F |
+-----+---+----+---+---+---+
|   0 | 1 |  2 | 0 | 0 | 0 |
|   1 | 0 |  0 | 0 | 1 | 1 |
|   2 | 0 |  5 | 1 | 0 | 0 |

我不知道我能不能做到这一点。我可以按 ID 分组,但您如何读取每个成绩列的计数值?

最佳答案

CREATE TABLE #MyTable(_count INT,id INT , grade VARCHAR(10))

INSERT INTO #MyTable( _count ,id  , grade )
SELECT 1,0,'A' UNION ALL
SELECT 2,0,'B' UNION ALL
SELECT 1,1,'F' UNION ALL
SELECT 3,1,'D' UNION ALL
SELECT 5,2,'B' UNION ALL
SELECT 1,2,'C' 


SELECT *
FROM
(
 SELECT _count ,id  ,grade
 FROM #MyTable
)A
PIVOT
(
  MAX(_count) FOR grade IN ([A],[B],[C],[D],[F])
)P

关于sql - 将元组值转换为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40558778/

相关文章:

PHP - 为什么 while(mysql_fetch_array(mysql_query())) 循环?

mysql - SQL Join表获取平均值

ruby-on-rails - Postgres 随机停止工作(Rails,PGSQL.5432)

SQL Server - 使用 group by 聚合比没有聚合更快

mysql - 显示组中的用户数,甚至是空组

mysql - SELECT 语句中的 SELECT 返回 0 计数

Paradox 数据库的 java 更新查询

SQL 连接条件 A 或 B,但不能同时是 A 和 B

regex - PostgreSQL regexp_replace() 只保留一个空格

postgresql - jdbcTemplate如何在微服务上部分http请求成功部分http请求失败时回滚