读书人

请好手前辈指点一句sql语句

发布时间: 2012-09-29 10:30:01 作者: rapoo

请高手前辈指点一句sql语句
表B的A_id=表A的id,如何用一句sql输出最后这样的表格?分不多,但请高手多多指教
表A
id时间 总价
12011-05-31 13:00:45100.38
22011-06-08 14:48:18208.69
32012-04-02 12:55:01 98.99
42012-04-02 13:04:09 50.00

表B
A_id支付方式 金额
1支票50.00
1 现金50.38
2支票 208.69
3现金28.99
3支票 30.00
3 银行卡40.00
4现金50.00

要求输出
时间支票银行卡现金总计
2011-0550.000 50.38100.38
2011-06 208.6900 208.69
2012-0430.0040.00 78.99148.99

[解决办法]
SELECT A.时间,SUM(CASE WHEN B.支付方式='支票' THEN B.金额 ELSE 0 END),
SUM(CASE WHEN B.支付方式='银行卡' THEN B.金额 ELSE 0 END),
SUM(CASE WHEN B.支付方式='现金' THEN B.金额 ELSE 0 END),MAX(A.总价)
FROM A INNER JOIN B ON B.A_id=A.id
GROUP BY A.时间
[解决办法]
select strftime('%Y-%m',时间),
sum(CASE 支付方式 WHEN '支票' THEN 金额 END) as 支票,
sum(CASE 支付方式 WHEN '银行卡' THEN 金额 END) as 银行卡,
sum(CASE 支付方式 WHEN '现金' THEN 金额 END) as 现金,
sum(金额) as 总计
from 表A,表B
where 表A.id=表B.id
group by strftime('%Y-%m',时间)

读书人网 >其他数据库

热点推荐