Sql ORA-01722错误消息:总和解码SUBSTR
我需要总计Sql ORA-01722错误消息:总和解码SUBSTR,sql,oracle,Sql,Oracle,我需要总计(交易数量*价格)进行买卖 这是我想要的结果: |CONTRACT| TRAN_QTY|PRICE BUY 50 1.2 BUY 20 2.0 SELL 10 1.0 SELL 40 2.5 但是当我运行下面的查询时,我在第1行得到了这个错误 第1行出错 ORA-01722:无效的num 我该怎么办 SELECT sum(decode(substr(O.tran_no,1,1), 'B', 'BUY'
(交易数量*价格)
进行买卖
这是我想要的结果:
|CONTRACT| TRAN_QTY|PRICE
BUY 50 1.2
BUY 20 2.0
SELL 10 1.0
SELL 40 2.5
但是当我运行下面的查询时,我在第1行得到了这个错误
第1行出错
ORA-01722:无效的num
我该怎么办
SELECT sum(decode(substr(O.tran_no,1,1), 'B', 'BUY')) BUY,
sum(decode(substr(O.tran_no,1,1),'S', 'SELL')) SELL,
O.TRAN_QTY,
O.PRICE,
o.client_no,
c.client_name,
sum(o.tran_qty*o.price)total,
o.branch_code,
r.descr,
O.CURRENCY,
O.STOCK_NO,
O.CSTAMP
from bos_m_ledger o,bos_m_para r,bos_m_client c,bos_cltype g
WHERE r.para_type='BRANCH' AND
R.PARA_CODE = O.BRANCH_CODE and
o.client_no=c.client_no and
g.nbrk_rate=1 and
c.client_type=g.client_type and
o.tdr_code=c.tdr_code and
o.tran_type= 'CON' AND
C.CLIENT_TYPE='6'
group by substr(o.tran_no,1,1),
o.client_no,
o.branch_code,
r.descr,
c.client_name,
O.CURRENCY,
O.STOCK_NO,
O.CSTAMP,
O.TRAN_QTY,
O.PRICE
ORDER BY O.BRANCH_CODE, O.CLIENT_NO'
将一串“买入”或“卖出”相加没有任何意义。我怀疑你是在试图欺骗一个
ORA-00979:而不是一个groupby expression
错误。此外,当您试图获得合计总额时,将TRAN_QTY
和PRICE
包含在projection和groupby子句中是没有意义的
因此,您可能需要做如下操作:
SELECT decode(substr(O.tran_no,1,1), 'B', 'BUY' ,'S', 'SELL') as contract,
o.client_no,
c.client_name,
sum(o.tran_qty*o.price) as total,
o.branch_code,
r.descr,
O.CURRENCY,
O.STOCK_NO,
O.CSTAMP
from bos_m_ledger o,bos_m_para r,bos_m_client c,bos_cltype g
WHERE r.para_type='BRANCH' AND
R.PARA_CODE = O.BRANCH_CODE and
o.client_no=c.client_no and
g.nbrk_rate=1 and
c.client_type=g.client_type and
o.tdr_code=c.tdr_code and
o.tran_type= 'CON' AND
C.CLIENT_TYPE='6'
group by decode(substr(O.tran_no,1,1), 'B', 'BUY' ,'S', 'SELL'),
o.client_no,
o.branch_code,
r.descr,
c.client_name,
O.CURRENCY,
O.STOCK_NO,
O.CSTAMP
ORDER BY O.BRANCH_CODE, O.CLIENT_NO;
谷歌的错误代码为“ORA-01722”,你可以找到更有价值的答案。请确认你是否传递了一个数值。如果您想了解更多有关此错误的信息,请参考以下链接。谢谢,我是新手,仍然能找到解决办法。TQ添加字符串“BUY”+“BUY”时会得到什么结果?换句话说:如果BUY和SELL是列名,那么删除单引号。如果不是,那么这个数字就没有任何意义了。买卖是一栏。但在它的数据库中,列“tran_no”下。所以我需要对买入和卖出进行求和,所以在oracle报告中,它将是2字段@小脚板