有表tb1(货品,部门,数量),表内数据如下
货品 部门 数量
A 销售部 20
B 技术部 60
C 总经办 50如果用SQL语句查询得出如下结果
货品 部门 数量
A 销售部 20
A 技术部 0
A 总经办 0
B 销售部 0
B 技术部 60
B 总经办 0
C 销售部 0
C 技术部 0
C 总经办 50多谢!
货品 部门 数量
A 销售部 20
B 技术部 60
C 总经办 50如果用SQL语句查询得出如下结果
货品 部门 数量
A 销售部 20
A 技术部 0
A 总经办 0
B 销售部 0
B 技术部 60
B 总经办 0
C 销售部 0
C 技术部 0
C 总经办 50多谢!
declare @t table([货品] varchar(1),[部门] varchar(6),[数量] int)
insert @t
select 'A','销售部',20 union all
select 'B','技术部',60 union all
select 'C','总经办',50select [货品],[部门] ,case [部门] when '销售部' then [数量] else 0 end as '数量' from @t
union all
select [货品],[部门] ,case [部门] when '技术部' then [数量] else 0 end as '数量' from @t
union all
select [货品],[部门] ,case [部门] when '总经办' then [数量] else 0 end as '数量' from @t---------------------
货品 部门 数量
A 销售部 20
B 技术部 0
C 总经办 0
A 销售部 0
B 技术部 60
C 总经办 0
A 销售部 0
B 技术部 0
C 总经办 50
from tb a,(select distinct 部门 from tb) b
if object_id('[tb1]') is not null drop table [tb1]
go
create table [tb1]([货品] varchar(1),[部门] varchar(6),[数量] int)
insert [tb1]
select 'A','销售部',20 union all
select 'B','技术部',60 union all
select 'C','总经办',50
---查询---
select a.货品,b.部门,isnull(c.数量,0) as 数量
from
(select distinct 货品 from tb1) a
join
(select distinct 部门 from tb1) b on 1=1
left join
tb1 c on a.货品=c.货品 and b.部门=c.部门
order by 1---结果---
货品 部门 数量
---- ------ -----------
A 技术部 0
A 销售部 20
A 总经办 0
B 技术部 60
B 销售部 0
B 总经办 0
C 技术部 0
C 销售部 0
C 总经办 50(9 行受影响)