关于一个统计汇总的问题,材料领用数统计

liujiayu10 2008-11-21 08:41:46
select cDepCode,cDepName,cInvCode,cInvname,iQuantity,iPrice from a01

1001 脱酸 01001 分子膜片 203823.0 2078994.6000
1001 脱酸 01002 离子膜片碱 100.0 NULL
1001 脱酸 01001 分子膜片 77.0 NULL
1002 硬化 01001 分子膜片 10.0 NULL --(合并)
1002 硬化 01001 分子膜片 15.0 NULL --(合并)

我想实现下面的样子:
1001 脱酸 01001 分子膜片 203900.0 2078994.6000
1001 脱酸 01001 离子膜片碱 100.0 0
1002 硬化 01001 分子膜片 25.0 0

意思是想统计某时间段内领用了材料的部门所领用材料数的汇总和金额的汇总

如果大家 帮下忙,谢谢!
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujiayu10 2008-11-21
  • 打赏
  • 举报
回复
谢谢大家!结帐!:)
水族杰纶 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liujiayu10 的回复:]
首先感谢一下楼上的速度,哈哈,我刚发完帖子,看了一段CSDN的YY帖,回来看就有了阁下的回复

部门的名称(cDepName)和存货名称(cInvName)也要放入Group by中吗?有没有其它办法
[/Quote]
select  cDepCode,cInvCode,sum(isnull(iQuantity,0)) iQuantity,sum(isnull(iPrice,0 )) iPrice
from a01
group by cDepCode,cInvCode
--如果不出現在前面,而又不在聚合函數(sum,max等)中就要出現在group by 中,要麼就不要出現select 列表中
csdyyr 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liujiayu10 的回复:]
首先感谢一下楼上的速度,哈哈,我刚发完帖子,看了一段CSDN的YY帖,回来看就有了阁下的回复

部门的名称(cDepName)和存货名称(cInvName)也要放入Group by中吗?有没有其它办法
[/Quote]
要分组的字段必须出现在group by
hyde100 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liujiayu10 的回复:]
首先感谢一下楼上的速度,哈哈,我刚发完帖子,看了一段CSDN的YY帖,回来看就有了阁下的回复

部门的名称(cDepName)和存货名称(cInvName)也要放入Group by中吗?有没有其它办法
[/Quote]
它们的code和name是一一对应的,而你也要显示这个名称,所以要放进去
csdyyr 2008-11-21
  • 打赏
  • 举报
回复
DECLARE @TB TABLE( cDepCode VARCHAR(4),cDepName NVARCHAR(5),cInvCode VARCHAR(5),cInvname NVARCHAR(10),iQuantity DECIMAL(10,1),iPrice DECIMAL(11,4))
INSERT @TB
SELECT '1001', N'脱酸', '01001', N'分子膜片', 203823.0, 2078994.6000 UNION ALL
SELECT '1001', N'脱酸', '01002', N'离子膜片碱', 100.0, NULL UNION ALL
SELECT '1001', N'脱酸', '01001', N'分子膜片', 77.0, NULL UNION ALL
SELECT '1002', N'硬化', '01001', N'分子膜片', 10.0, NULL UNION ALL
SELECT '1002', N'硬化', '01001', N'分子膜片', 15.0, NULL

SELECT cDepCode,cDepName,cInvCode,cInvname,SUM(iQuantity) AS iQuantity,ISNULL(SUM(iPrice),0) AS iPrice
FROM @TB
GROUP BY cDepCode,cDepName,cInvCode,cInvname
/*
cDepCode cDepName cInvCode cInvname iQuantity iPrice
-------- -------- -------- ---------- ---------------------------------------- ----------------------------------------
1001 脱酸 01001 分子膜片 203900.0 2078994.6000
1001 脱酸 01002 离子膜片碱 100.0 .0000
1002 硬化 01001 分子膜片 25.0 .0000
*/
liujiayu10 2008-11-21
  • 打赏
  • 举报
回复
首先感谢一下楼上的速度,哈哈,我刚发完帖子,看了一段CSDN的YY帖,回来看就有了阁下的回复

部门的名称(cDepName)和存货名称(cInvName)也要放入Group by中吗?有没有其它办法
水族杰纶 2008-11-21
  • 打赏
  • 举报
回复
select  cDepCode,cDepName,cInvCode,cInvname,sum(isnull(iQuantity,0)) iQuantity,sum(isnull(iPrice,0 )) iPrice
from a01
group by cDepCode,cDepName,cInvCode,cInvname
昵称被占用了 2008-11-21
  • 打赏
  • 举报
回复
select cDepCode,cDepName,cInvCode,cInvname,sum(iQuantity) as iQuantity,sum(iPrice) as iPrice  from a01 
group by cDepCode,cDepName,cInvCode,cInvname
hyde100 2008-11-21
  • 打赏
  • 举报
回复
select 
cDepCode,cDepName,cInvCode,cInvname,sum(isnull(iQuantity,0)) iQuantity,sum(isnull(iPrice,0 )) iPrice
from a01
where --这里是时间段限制条件
group by cDepCode,cDepName,cInvCode,cInvname
hyde100 2008-11-21
  • 打赏
  • 举报
回复
select 
cDepCode,cDepName,cInvCode,cInvname,sum(isnull(iQuantity,0)) iQuantity,sum(isnull(iPrice,0 )) iPrice
from a01
group by cDepCode,cDepName,cInvCode,cInvname

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧