sql - 将行查询到列中

标签 sql sql-server sql-server-2008 pivot

我在 tbl1 中有数据:

item    date    amount
a   1   10
a   2   20
a   3   30
a   4   40
b   1   20
b   2   30
b   3   40
b   4   50
c   1   30
c   2   40
c   3   50
c   4   60

但我需要像下面这样

item    1   2   3   4
a   10  20  30  40
b   20  30  40  50
c   30  40  50  60

最佳答案

使用PIVOT

SELECT item, [1], [2], [3], [4]
FROM tbl1 t
PIVOT (SUM(amount) FOR date IN ([1], [2], [3], [4])) p
SELECT item, [10], [20], [30], [40], [50], [60]
FROM tbl1 t
PIVOT (MAX(date) FOR amount IN ([10], [20], [30], [40], [50], [60])) p

输出:

item    1   2   3   4
a       10  20  30  40
b       20  30  40  50
c       30  40  50  60

SQL fiddle :http://sqlfiddle.com/#!3/f097d/12/0

关于sql - 将行查询到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638274/

相关文章:

c# - 在 Linq to SQL 中处理 DataContext 后无法访问相关数据

java - 如何将表值参数从java传递到sql server存储过程?

php - $_POST 接收要更新的动态字段数量

sql - 如何将更新的记录移动到历史表中?

php - 从 php 中的 foreach 生成表计算总价

SQL Compact - 执行多个插入语句时出错

sql - 按列名对统计数据进行分组

sql - sql server 图标是什么意思?

mysql - 根据 MySQL 中的 WHERE 子句创建具有不同值的重复更新

mysql - 最快和/或最简单的方法是什么?