请教关于不同列的求和问题

szit2000 2009-10-27 10:27:36
假如有三种纸张种类 A3 、 A4 、 A5 ,三个工人 张、 李、 王 每次作业用的种类可能都不一样,查询要怎样写才能得到正确的统计结果

最后结果反映在 DataGrid 里

总纸张数(不分种类)






数据库数据

A3使用人 纸张数 A4使用人 纸张数 A5使用人 纸张数

张 1 王 3 李 4

王 2 李 1

张 4


SUM里面的条件不知道应该怎么写才对

...全文
126 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
szit2000 2009-10-27
  • 打赏
  • 举报
回复
实在不行的话估计要把一条记录按作业人数拆分成几条才容易计算些 = =
nianran520 2009-10-27
  • 打赏
  • 举报
回复

--测试数据
declare @table table (A3使用人 nvarchar(10),A3纸张数 int,A4使用人 nvarchar(10),A4纸张数 int,
A5使用人 nvarchar(10),A5纸张数 int)
insert into @table
select '张',1,'王',3,'李',4 union all
select '王',2,'李',1,'',null union all
select '张',4,'',null,'',null
--只能做成存储过程了,以姓名来查询
declare @name nvarchar(10)
set @name = '张'
select @name as 使用人,sum(case A3使用人 when @name then (isnull(A3纸张数,0)) else 0 end +
case A4使用人 when @name then (isnull(A4纸张数,0)) else 0 end +
case A5使用人 when @name then (isnull(A5纸张数,0)) else 0 end) as 总纸张数
from @table
--结果
--------------
张 5
szit2000 2009-10-27
  • 打赏
  • 举报
回复
先谢谢各位,我下班回家试试,晚点结贴
--小F-- 2009-10-27
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091016/16/b0a366ef-24de-4f9f-981f-9b33812c7f80.html?75189

估计和这个差不多 把里面的min改成sum就行了
md198687 2009-10-27
  • 打赏
  • 举报
回复
把两个表分开建,A3 、 A4 、 A5 字段级A3 、 A4 、 A5 的id,counts(纸张数),userid(使用人的id)
表二 userid userName



这样查比较容易
qlh 2009-10-27
  • 打赏
  • 举报
回复

select 使用人,sum(数量) from
(select A3使用人 as 使用人,数量1 as 数量 from #A
union all
select A4使用人 as 使用人,数量2 as 数量 from #A
union all
select A5使用人 as 使用人,数量3 as 数量 from #A
) a
where 使用人 is not null
group by 使用人
peterormike 2009-10-27
  • 打赏
  • 举报
回复
趁早把这个表给改了吧
szit2000 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
没看懂
[/Quote]

其实就像一份工作,有可能一个人独立完成,也可能三、四个人分工合作,每个人占的比例不一样

最后统计出总工作量而已
小宏 2009-10-27
  • 打赏
  • 举报
回复
表结构都没有说明白
szit2000 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nianran520 的回复:]
这样子设计会死人
[/Quote]

但每次工人作业都只记录一条数据的话,我只能想到这种办法了。。
szit2000 2009-10-27
  • 打赏
  • 举报
回复
A3使用人 A3纸张数 A4使用人 A4纸张数 A5使用人 A5纸张数

张 1 王 3 李 4

王 2 李 1

张 4

纸张数前少写了类型,当然不会一样。。

--小F-- 2009-10-27
  • 打赏
  • 举报
回复
没看懂
nianran520 2009-10-27
  • 打赏
  • 举报
回复
这样子设计会死人
roverg 2009-10-27
  • 打赏
  • 举报
回复
数据库设计好奇怪...你是不是搞错了,正常的数据库应该是
使用人 纸张类型 数量 这样吧
jwdream2008 2009-10-27
  • 打赏
  • 举报
回复
奇怪:数据库数据中三个列名都一样??
szit2000 2009-10-27
  • 打赏
  • 举报
回复
用的是 SQL2000 和 ASP.NET C#

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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