有这么一个表:
ProductID, QTY, TYPE
1 10 出库
1 5 入库
2 20 出库
3 15 入库我想把他们作成一个view的效果
ProductID 出库数 入库数 剩余
1 10 5 -5
2 20 0 -20
3 0 15 15请教sql语句该怎么写
ProductID, QTY, TYPE
1 10 出库
1 5 入库
2 20 出库
3 15 入库我想把他们作成一个view的效果
ProductID 出库数 入库数 剩余
1 10 5 -5
2 20 0 -20
3 0 15 15请教sql语句该怎么写
解决方案 »
- sqlserver代码编辑器显示行数
- 如何更改sql server的服务器名称?该名称和操作系统有关系吗?
- 求助SQL帮助一道题^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- 查询结果中如何包含自己定义的列???
- 一个根据表单提交筛选数据库记录的问题(个人感觉比较难)
- 求一触发器
- 这个统计语句如何写???
- 求解决方法
- SQL的一个奇难问题?在线等待!!!!!!!
- 如何将在读取SqlServer的这句Sql语句改成在Access的数据库中亦可使用???
- 执行dbcc checkdb('databasename')报错:在 sysobjects、sysindexes、syscolumns 或 systypes 中存在一致性错误,妨碍了进一步的 CHECKDB
- 这是什么错误?
insert t select 1,10,'出库'
union all select 1,5,'入库'
union all select 2,20,'出库'
union all select 3,15,'入库'select ProductID,
出库数=sum(case when TYPE='出库' then QTY else 0 end),
入库数=sum(case when TYPE='入库' then QTY else 0 end),
剩余=sum(case when TYPE='入库' then QTY else -QTY end)
from t
group by ProductIDProductID 出库数 入库数 剩余
----------- ----------- ----------- -----------
1 10 5 -5
2 20 0 -20
3 0 15 15
ProductID,
sum(case when TYPE='出库' then QTY else 0 end) as 出库数,
sum(case when TYPE='入库' then QTY else 0 end) as 入库数,
sum(case when TYPE='入库' then QTY else -QTY end) as 剩余
from 表名
group by ProductID
order by ProductID
SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE 0 END) 出库数,
SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE 0 END) 入库数,
SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE -QTY END) 剩余
FROM tblTest
GROUP BY ProductID
ORDER BY ProductID
SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE 0 END) 出库数,
SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE 0 END) 入库数,
SUM(CASE WHEN TYPE = '剩余' THEN QTY ELSE -QTY END) 剩余
FROM tblTest
GROUP BY ProductID
ORDER BY ProductID
SUM(CASE WHEN TYPE = '出库' THEN QTY ELSE 0 END) 出库数,
SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE 0 END) 入库数,
SUM(CASE WHEN TYPE = '入库' THEN QTY ELSE -QTY END) 剩余
FROM tblTest
GROUP BY ProductID
ORDER BY ProductID
---------------------------------------------------------------------
看错了,不好意思: 剩余 = 入库 - 出库