表名fruits
name quts type
名称 数量 类型
苹果 10 进
香蕉 20 进
橘子 10 进
苹果 10 出
香蕉 20 进
橘子 10 出
苹果 10 进
写一条sql显示下面的结果
名称 出库数量 进货数量 存货量
苹果 10 20 10
香蕉 0 40 40
橘子 10 10 0
[code="sql"]
SELECT t.name 名称,
SUM(CASE WHEN t.type = '出' THEN t.quts ELSE 0 END) 出库数量,
SUM(CASE WHEN t.type = '进' THEN t.quts ELSE 0 END) 进货数量,
SUM(CASE WHEN t.type = '进' THEN t.quts ELSE 0 END) - SUM(CASE WHEN t.TYPE = 'chu' THEN t.quts ELSE 0 END) 存货量
FROM fruit t
GROUP BY t.name
[/code]
很简单呀[code="java"]SELECT t.name 名称,
SUM(CASE WHEN t.type = '出' THEN t.quts ELSE 0 END) 出库数量,
SUM(CASE WHEN t.type = '进' THEN t.quts ELSE 0 END) 进货数量,
SUM(CASE WHEN t.type = '进' THEN t.quts ELSE 0 END) - SUM(CASE WHEN t.TYPE = 'chu' THEN t.quts ELSE 0 END) 存货量
FROM fruit t
GROUP BY t.name [/code]这样就可以呀。
楼上说的对
[code="java"]
SELECT
name,
sum(CASE WHEN ttype='进' THEN quts ELSE 0 END) AS tin,
sum(CASE WHEN ttype='出' THEN quts ELSE 0 END) AS tout,
sum(CASE WHEN ttype='进' THEN quts ELSE 0 END)-sum(CASE WHEN ttype='出' THEN quts ELSE 0 END)
FROM tttt
GROUP BY name
[/code]
sql的基本原理就是,每次读取的只能是一行一行的数据,利用集合函数或判断函数,对数据做下处理