SQL Server中的分组和求和的问题


物品 数量 类型
笔记本电脑 100 进货
台试机 100 进货
手机 100 进货
笔记本电脑 50 出货
台试机 60 出货
手机 70 出货

要查处这样的效果怎么查啊
物品 数量
笔记本电脑 50
台试机 40
手机 30

============================================

 

select 物品,sum(数量)
from
(selelct 物品,sum(数量) as 数量 from table where 类型=‘进货' group by 物品) as table1,
(selelct 物品,sum(数量)*(-1) as 数量 from table where 类型=‘出货' group by 物品) as table2
where table1.物品=table2.物品
group by 物品
==========
后面用到group by +的列,此列必须是select 语句中有的,如果没有侧sum ,count 等函数操作过的列
==========

SQL Server,可以使用GROUP BY子句对数据进行分组,并使用聚合函数如SUM()对每个组进行求和。下面是一个示例查询,演示如何使用GROUP BY和SUM()函数进行分组求和: SELECT DeptName, SUM(Salary) AS TotalSalary FROM DeptInfo GROUP BY DeptName; 这个查询将根据DeptName列对数据进行分组,并计算每个组的Salary总和。结果将包含每个部门的名称和对应的总薪水。 如果需要在结果显示全部的合计和小计,可以使用WITH ROLLUP子句。下面是一个示例查询,演示如何使用WITH ROLLUP和CASE语句进行分组求和,并显示合计和小计: SELECT CASE WHEN GROUPING(DeptName) = 1 THEN '合计' ELSE DeptName END AS DeptName, SUM(Salary) AS TotalSalary FROM DeptInfo GROUP BY DeptName WITH ROLLUP; 这个查询将根据DeptName列对数据进行分组,并计算每个组的Salary总和。使用CASE语句在结果显示'合计'或部门名称。WITH ROLLUP子句将在结果添加合计行和小计行,以显示每个部门的总薪水和整个表的总薪水。 请注意,以上示例的表和列名仅供参考,你需要根据实际情况进行调整。 #### 引用[.reference_title] - *1* [Server SQL 分组后 ,其他字段值相加(...for xml path)](https://blog.csdn.net/hamunet/article/details/110355567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计](https://blog.csdn.net/qq_28256783/article/details/98616741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值