表格:
create table stock(bDate date, packing varchar(100), Balance number);
insert into stock values(to_date('1-JAN-2019','DD-MM-YY'),'10kg Normal Bags', 60);
insert into stock values(to_date('1-JAN-2019','DD-MM-YY'),'15kg Box', 60);
insert into stock values(to_date('1-JAN-2019','DD-MM-YY'),'Cealing Role', 60);
insert into stock values(to_date('1-JAN-2019','DD-MM-YY'),'Cello Tape', 60);
insert into stock values(to_date('2-JAN-2019','DD-MM-YY'),'10kg Normal Bags', 70);
insert into stock values(to_date('2-JAN-2019','DD-MM-YY'),'15kg Box',70);
insert into stock values(to_date('2-JAN-2019','DD-MM-YY'),'Cealing Role', 70);
insert into stock values(to_date('2-JAN-2019','DD-MM-YY'),'Cello Tape', 70);
insert into stock values(to_date('3-JAN-2019','DD-MM-YY'),'10kg Normal Bags',80);
insert into stock values(to_date('3-JAN-2019','DD-MM-YY'),'15kg Box', 80);
insert into stock values(to_date('3-JAN-2019','DD-MM-YY'),'Cealing Role', 80);
insert into stock values(to_date('3-JAN-2019','DD-MM-YY'),'Cello Tape', 80);
看起来像
现在我要按如下方式表示该表中的数据
我尝试过
SELECT * FROM
(
SELECT * FROM stock
)
PIVOT
(
MAX(Balance)
FOR bDate
IN (to_date('1-jan-2019','DD-MM-YYYY') as "1-JAN-2019", to_date('2-jan-2019','DD-MM-YYYY') as "2-JAN-2019" , to_date('3-jan-2019','DD-MM-YYYY') as "3-JAN-2019")
)
ORDER BY packing;
我得到了预期的输出。但是将动态添加将来日期的记录,例如4-JAN-2019、5-JAN-2019等。那如何在上面的查询中管理它?
我已经尝试过
SELECT * FROM
(
SELECT * FROM stock
)
PIVOT
(
MAX(Balance)
FOR bDate
IN (select distinct(bDate) from stock)
)
ORDER BY packing;
错误:
ORA-00936: missing expression
00936. 00000 - "missing expression"
*Cause:
*Action:
Error at Line: 9 Column: 7
如何使用列标签作为对应的日期动态地实现此结果,如图所示?