我使用SQL Developer和BIRT Viewer,在应用格式掩码'999G999G999G999G999G999G990'时出现此错误:
ORA-01722: μη αποδεκτός αριθμός
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
查询:
select
*
from
( select pc.description production_category,
decode(pph.allocation,1,'GR-70B',2,'BG',3,'GR-70A',4,'GR-70Δ',6,'UK',8,'USA-KY',9,'USA-OR') alloc,
to_number(to_char(sum(ppd.pcs),'999G999G999G999G999G999G990')) pcs
from prd_production_hd pph,
prd_production_details ppd,
prod_categories pc
where pph.id = ppd.production_id
and ppd.prd_category_id in (14,15,16,17,18,20,21,51,52,56)
and ppd.pcs is not null
and ppd.prd_category_id = pc.id
and pph.prod_date = :P_DATE
group by pc.description,pph.allocation
)
pivot (
sum(pcs)
for alloc in ('GR-70B' GR_70Β, 'BG' BG, 'GR-70A' GR_70Α, 'GR-70Δ' GR_70Δ,'UK' UK,'USA-KY' USA_KY,'USA-OR' USA_OR)
)`
是否有其他方法来应用格式掩码?
2条答案
按热度按时间gk7wooem1#
您似乎想要聚合并格式化数字:
PIVOT
之前不需要DECODE
allocation
s;你可以在PIVOT
中实现。你也不需要聚合两次;在PIVOT
中重复一次。*qybjjes12#
在我看来,这是错误的:
由内而外:
sum(ppd.pcs)
导致number
数据类型值to_char
应用于该数值并提供格式模型(这是可以的)to_number
到它-为什么?你就是从那里开始的!因此:
to_number(to_char(
并保留sum(ppd.pcs)
number
,或者to_number(