有一张表 A,数据如下:
【姓名】 【重量】 【类别】张三 50 入库
李四 10 入库
王五 30 入库
张三 20 倒库
李四 10 倒库
王五 20 倒库
王五 30 出库
赵虎 30 出库我想得到结果:【姓名】 【入库】 【倒库】 【出库】
张三 50 20 0
李四 10 10 0
王五 30 20 30
赵虎 0 0 30
(备注:还有一个人员表,里面存有所有的人员)
【姓名】 【重量】 【类别】张三 50 入库
李四 10 入库
王五 30 入库
张三 20 倒库
李四 10 倒库
王五 20 倒库
王五 30 出库
赵虎 30 出库我想得到结果:【姓名】 【入库】 【倒库】 【出库】
张三 50 20 0
李四 10 10 0
王五 30 20 30
赵虎 0 0 30
(备注:还有一个人员表,里面存有所有的人员)
解决方案 »
- 再求select语句:关于2个表互相关联
- 求一存储过程:把一字符串以,分割开,然后一次性全部插入数据库表。急,在线等!
- sql存储过程返回数据的同时返回一个输出参数在asp.net后台该如何接收这两个值
- MsSqlServer 能否在事先指定的时间做某项工作,类似于windows的计划任务?
- 一个表中的子段来自另一个表的记录ID,而且是复选,怎么设计比较好?
- 高手们帮一下吧,看似简单实则非常复杂的问题
- 大家进来啊帮小弟解决问题
- 急问:foxpro的简单问题!!!!!!!!!!!!!!1
- 请问在vb中,如何把image box 的图片加到sql server 中
- 一个比较棘手的问题(在线等待)
- 相同地区相同材料取最高单价,最低单价,平均价的问题
- sql 錯誤, 在綫等!
select 姓名,
sum(case when 类别='入库' then 数量 else 0 end) 入库,
sum(case when 类别='出库' then 数量 else 0 end) 出库,
sum(case when 类别='倒库' then 数量 else 0 end) 倒库
from tb
group by 姓名
sum(case when 类别='入库' then 数量 else 0 end) '入库',
sum(case when 类别='出库' then 数量 else 0 end) '出库',
sum(case when 类别='倒库' then 数量 else 0 end) '倒库'
from tb
group by 姓名
declare @test table(姓名 nvarchar(3),重量 int,类别 nvarchar(2))
insert into @test
select N'张三', 50, N'入库' union all
select N'李四', 10, N'入库' union all
select N'王五', 30, N'入库' union all
select N'张三', 20, N'倒库' union all
select N'李四', 10, N'倒库' union all
select N'王五', 20, N'倒库' union all
select N'王五', 30, N'出库' union all
select N'赵虎', 30, N'出库'
select t.姓名,
入库=isnull((select sum(重量) from @test where 姓名=t.姓名 and 类别=N'入库'),0),
倒库=isnull((select sum(重量) from @test where 姓名=t.姓名 and 类别=N'倒库'),0),
出库=isnull((select sum(重量) from @test where 姓名=t.姓名 and 类别=N'出库'),0)
from
(select distinct 姓名 from @test) t
/*
姓名 入库 倒库 出库
---- ----------- ----------- -----------
张三 50 20 0
李四 10 10 0
王五 30 20 30
赵虎 0 0 30
*/