一个表tab1有三列,id(编号)、sort(类型),price(钱数),select* from tab1 返回的结果如下
id sort price
2 收 400
3 出 3000
4 收 5000
怎样用sql实现下列操作 使其返回结果如下
编号 收 出 利润
3 2000 300 1700
id sort price
2 收 400
3 出 3000
4 收 5000
怎样用sql实现下列操作 使其返回结果如下
编号 收 出 利润
3 2000 300 1700
调试欢乐多
sum(decode(sort,'收',price,0)) 收,
sum(decode(sort,'出',price,0)) 收,
sum(decode(sort,'出',price,0))-sum(decode(sort,'收',price,0)) 利润
from tab1
group by id
UNION
SELECT '2' ID,'出' SORT, 400 price FROM dual
UNION
SELECT '3' ID,'收' SORT, 2000 price FROM dual
UNION
SELECT '2' ID,'收' SORT, 1400 price FROM dual
UNION
SELECT '1' ID,'出' SORT, 800 price FROM dual
UNION
SELECT '3' ID,'出' SORT, 300 price FROM dual
)
SELECT ID 编号 ,
SUM(DECODE(SORT,'收',price,0)) 收,
SUM(DECODE(SORT,'出',price,0)) 出,
SUM(DECODE(SORT,'收',price,0))-SUM(DECODE(SORT,'出',price,0)) 利润
FROM a
GROUP BY ID
SUM(DECODE(SORT,'收',price,0)) 收,
SUM(DECODE(SORT,'出',price,0)) 出,
SUM(DECODE(SORT,'收',price,'出',-1*price,0) 利润
FROM a
GROUP BY ID