sql server 2000 这样的查询语句这么写?求救!

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:05:09
我的表是这样的:
//商品表
create table spbm(
spbm varchar(30),
spmc varchar(30),
sl int,
ckbm varchar(30)
);
//仓库表
create table ckbm(
ckbm varchar(30),
ckmc varchar(30),
sl int
);
如图:商品数据库(spbm表)
==============================
编码 品名 数量 仓库编码
---------------------------------------
sp1 香烟 6 ck1
sp1 云烟 9 ck2
sp2 火机 8 ck2
sp3 中华 7 ck1
=====================================
仓库数据库(ckbm表)
====================================
仓库编码 仓库名称 仓库数量
-------------------------------------
ck1 烟酒 6
ck2 其它 8
======================================
以上是数据库里的内容商品数据库里的数量、仓库编码 和仓库里的一一对应!
现在我想要的查询结果是这样的:如图
======================================
商品编码 商品名称 合计 烟酒 其它《-------仓库名------有多少仓库这里就显示几列,并且对应的商品数量就按这样分布
------------------------------------------
sp

select a.*
,max(case b.ckbm when 'ck1' then b.sl else 0 end) as 烟酒
,max(case b.ckbm when 'ck2' then b.sl else 0 end) as 其它
from
(
select spbm,min(spmc) 商品名称, sum(sl) as 合计
from spbm group by spbm
) a,spbm b,ckbm c
where a.spbm=b.spbm and b.ckbm=c.ckbm
group by a.spbm,a.商品名称,a.合计

--结果:
spbm 商品名称 合计 烟酒 其它
sp1 香烟 15 6 9
sp2 火机 8 0 8
sp3 中华 7 7 0

select s.商品编码,s.商品名称,count(s.仓库编码) as 合计,c.* from spbm s inner join ckbm c on s.仓库编码=c.仓库编码 group by s.仓库编码

select A.spbm as '商品编码',A.spmc as '商品名称',sum(A.sl,B.sl) as '合计',A.sl,B.sl from spbm A left join ckbm B on A.spbm=B.spbm group by A.spbm