PDA

View Full Version : help me select sum trong oracle



Nobboo
17-08-2007, 10:53
chào các bạn.
Mình đang có 1 đống dữ liệu, mình cần tổng hợp SUM các Số liệu >=0 vào 1 cột, sum các số liệu <0 vào một cột.
VD:
Select Ten, Bán, Mua From Data.
ở đó Mua là Total của các giá trị (giả sử là cột Cost) >=0 vào bán là các cột < 0.
Có cách nào k các anh,
hy vọng Sigmasvn giúp đỡ tiếp.
cám ơn rất nhiều.:helpsmili:helpsmili

minhpn
17-08-2007, 13:37
select TEN,SUM(BAN) as BAN, sum(MUA) as MUA
from (
select TEN,sum(BAN) as BAN, 0 as MUA from DATA
where BAN<0
group by TEN
Union
select TEN,0 as BAN, sum(MUA) as MUA from DATA
where MUA>=0
group by TEN
) A
GROUP BY TEN

Nobboo
17-08-2007, 16:03
thank bạn, phép union rồi sum lại mình làm được, mình muốn 1 cách làm khác tốt hơn, mình nghĩ là có thể dùng Analytic Funtion mà chưa tìm ra.
hiện thời mình làm như sau:

SELECT TEN, COMPANY, CUR, NGAYSL,
SUM(DECODE(SIGN(AMOUNT_LCY), 1, AMOUNT_LCY, 0),
SUM(DECODE(SIGN(AMOUNT_LCY), -1, AMOUNT_LCY, 0)
FROM
IMP_CHARGE
WHERE
NGAYSL >= to_date('01/07/2007','DD/MM/YYYY') AND
GROUP BY COMPANY, CUR, NGAYSL

ViTieuBao2003
25-08-2007, 09:34
SELECT colA, colB, colC
SUM(DECODE(AMOUNT_LCY,'>0',AMOUNT_LCY, 0)),
SUM(DECODE(AMOUNT_LCY,'<0',AMOUNT_LCY, 0))
FROM tblX



Ý nghĩa dòng lệnh
DECODE(AMOUNT_LCY,'>0',AMOUNT_LCY, 0)

IF AMOUNT_LCY >0 THEN
Return AMOUNT_LCY
ELSE
Return 0
END IF