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字段@小脚板