什么是用于创建数据透视表的SQL查询?

时间:2014-09-17 13:19:46

标签: sql postgresql pivot

我正在尝试创建一个SQL查询以创建一个数据透视表,我的数据在PostgreSQL数据库上。

据我所知,创建数据透视表有4个元素

1)行组

2)专栏组

3)测量组

4)一个函数(例如:Max)

我认为CASE ... WHEN列在创建数据透视(交叉表)查询方面发挥了作用。

所以使用这些元素,相应的SQL查询会是什么样子?

1 个答案:

答案 0 :(得分:2)

如果要将行数据转换为列,则可以使用聚合函数和CASE表达式。

我们假设您的数据类似于以下内容:

create table yourtable
(
  id int,
  name varchar(50),
  amount decimal (10,2)
);

insert into yourtable
select 1, 'Jim', 50.00 union all
select 2, 'Bob', 150.00 union all
select 3, 'Blah', 500.00;

并且您希望将名称转换为列,然后您可以使用类似于以下内容的基本查询来获得结果:

select
  sum(case when name = 'Jim' then amount else 0 end) as Jim,
  sum(case when name = 'Bob' then amount else 0 end) as Bob,
  sum(case when name = 'Blah' then amount else 0 end) as Blah
from yourtable

这会给你一个结果:

| Jim    | Bob    | Blah   |
| 50.00  | 150.00 | 500.00 |