Мне нужно изменить этот код для декодирования или любого решения, чтобы убедиться, что результат для SELL (-ve значение) и BUY (+ ve значение). и он должен отображаться в 1 строке, поэтому в моем отчете оракула столбец будет рядом для ПОКУПАТЬ | ПРОДАТЬ.
sum(case when (o.tran_qty * o.price) < 0
then (o.tran_qty * o.price) else 0 end) as sell_t,
sum(case when (o.tran_qty * o.price) > 0
then (o.tran_qty * o.price) else 0 end) as buy_t,
на данный момент в построителе отчетов я получил этот результат.
![enter image description here](https://i.stack.imgur.com/bq4Kn.jpg)
, поэтому мне нужно объединить клиента, чтобы он не стал одной строкой.
полный код для получения результата на картинке выше.
SELECT
COUNT(decode(substr(o.tran_no,1,1), 'B', 'BUY')) Buy,
COUNT(decode(substr(o.tran_no,1,1),'S', 'SELL')) sell,
nvl('D.EXCH_CODE','01') AS CODE,
sum(case when (o.tran_qty * o.price) < 0 then
(o.tran_qty * o.price) else 0 end) as sell_t,
sum(case when (o.tran_qty * o.price) > 0 then
(o.tran_qty * o.price) else 0 end) as buy_t,
o.client_no,c.client_name,
sum(o.tran_qty*o.price)total,o.branch_code,r.descr,
C.TDR_CODE
from bos_m_ledger o,bos_m_para r,bos_m_client c,
bos_cltype g,BOS_M_STOCK D
WHERE
r.para_type='BRANCH'
AND R.PARA_CODE = O.BRANCH_CODE
and o.client_no=c.client_no
AND O.STOCK_NO =D.STOCK_NO
AND D.CSTAMP_EXPIRY_DATE IS NOT NULL
AND C.CLIENT_NO='3JF0391'
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 TO_DATE(TO_CHAR(O.TRAN_DATE,'MON'),'MON')=TO_DATE(:P_MONTH,'MON')
AND TO_DATE(TO_CHAR(O.TRAN_DATE,'YYYY'),'YYYY') = TO_DATE(:P_YEAR,'YYYY')
group by
substr(o.tran_no,1,1),o.client_no,o.branch_code,r.descr,c.client_name,
C.TDR_CODE
ORDER BY O.BRANCH_CODE, C.TDR_CODE,O.CLIENT_NO