我有以下数据透视查询:
select *
from
(
select order_id,unit_price,quantity,sum(unit_price*quantity)
over (partition by order_id) as Total
from DEMO_ORDER_ITEMS
) tbla
pivot
(
sum(unit_price*quantity) as unit_totals
for unit_price in(30,50,60,80,110,120,125,150)
) tblb
order by order_id;
产生以下结果:
ORDER_ID TOTAL 30_UNIT_TOTALS 50_UNIT_TOTALS 60_UNIT_TOTALS 80_UNIT_TOTALS 110_UNIT_TOTALS 120_UNIT_TOTALS 125_UNIT_TOTALS 150_UNIT_TOTALS
1 1890 500 640 750
2 2380 60 250 180 480 220 240 500 450
3 1640 100 240 320 480 500
4 1090 180 200 220 240 250
5 950 150 180 320 300
6 1515 330 360 375 450
7 905 90 250 120 320 125
8 1060 160 330 120 450
9 730 240 240 250
10 870 250 320 300
我想更改以TOTAL结尾的列的顺序。如何按首选顺序选择列? 这样做:选择tblb。* ....但选择tblb.30_UNIT_TOTALS失败。
答案 0 :(得分:1)
如果字段不是以字母字符开头,则必须引用字段。此外,使用引号使标识符区分大小写。所以你必须写:
tblb."30_UNIT_TOTALS"
- 不带引号的标识符必须以数据库字符集中的字母字符开头。带引号的标识符可以以任何字符开头。
[...]
- 不带引号的标识符不区分大小写。 Oracle将它们解释为大写。带引号的标识符区分大小写。