我有这个数据:
drop table sample_data;
create table sample_data
(
id_order number ,
id_product number ,
qty number
);
insert into sample_data values (100,1,42);
insert into sample_data values (100,2,5);
insert into sample_data values (100,3,178);
insert into sample_data values (100,4,66);
现在我想将id_product值旋转到列中
select *
from
(
select id_order, id_product, qty from sample_data
)
pivot
(
sum(qty) as qty
for (id_product)
in
(
'1' as P01
, '2' as P02
, '3' as P03
, '4' as P04
)
)
;
此查询对透视列使用别名,如下所示:
ID_ORDER P01_QTY P02_QTY P03_QTY P04_QTY
---------- ---------- ---------- ---------- ----------
100 42 5 178 66
现在,我想像这样给透视列取别名
ID_ORDER QTY_P01 QTY_P02 QTY_P03 QTY_P04
---------- ---------- ---------- ---------- ----------
100 42 5 178 66
提前感谢Amine
1条答案
按热度按时间t2a7ltrp1#
不要使用
SELECT *
,而是命名您的列并提供新的别名。或者,如果您只执行单个聚合,则只在
PIVOT
的IN
子句中定义别名(而不是也用于聚合):对于样本数据,两者都输出:
| ID_订单|QTY_P01| QTY_P02| QTY_P03| QTY_P04|
| --|--|--|--|--|
| 100 | 42 | 5 | 178 | 66 |
fiddle