我正在尝试创建一个SQL查询以创建一个数据透视表,我的数据在PostgreSQL数据库上。
据我所知,创建数据透视表有4个元素
1)行组
2)专栏组
3)测量组
4)一个函数(例如:Max)
我认为CASE ... WHEN
列在创建数据透视(交叉表)查询方面发挥了作用。
所以使用这些元素,相应的SQL查询会是什么样子?
答案 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 |