请在下面找到sql查询
create table test_bin (date1 varchar2(10), desc varchar2(10), values number(10));
insert into test_bin values ('10DEC2015', 'ABC', 10);
insert into test_bin values ('10DEC2015', 'CDE', 20);
insert into test_bin values ('10DEC2015', 'XYZ', 35);
insert into test_bin values ('12DEC2015', 'ABC', 10);
insert into test_bin values ('12DEC2015', 'CDE', 45);
insert into test_bin values ('12DEC2015', 'XYZ', 98);
insert into test_bin values ('13DEC2015', 'ABC', 76);
insert into test_bin values ('13DEC2015', 'CDE', 86);
insert into test_bin values ('13DEC2015', 'XYZ', 63);
commit;
问题: - 我期待以下输出,我尝试了我的最佳水平,我无法获得正确的查询
DESC 10DEC2015 12DEC2015 13DEC2015
ABC 10 NULL NULL
CDE 20 NULL NULL
XYZ 35 NULL NULL
ABC NULL 10 NULL
CDE NULL 45 NULL
XYZ NULL 98 NULL
ABC NULL NULL 76
CDE NULL NULL 86
XYZ NULL NULL 63
答案 0 :(得分:0)
这只是一种方式:
select desc,
SUM(case when date1='10DEC2015' then values end) as "10DEC2015",
sum(case when date1='12DEC2015' then values end) as "12DEC2015",
sum(case when date1='13DEC2015' then values end) as "13DEC2015"
from test_bin
group by date1, desc;
它假设您已经知道date1的所有现有值,除非您动态创建请求。
PS:小心使用SQL关键字作为列名
PS1:http://www.sqlfiddle.com/#!9/20068f/5,它位于 MySQL 中,因为10g不可用且Oracle远离我而且列名已被更改以避免与SQL关键字冲突