if object_id('pubs..商品目录表') is not null
drop table 商品目录表
go
create table 商品目录表(ID int,名称 varchar(10),规格 varchar(10),产地 varchar(10))
insert into 商品目录表(ID,名称,规格,产地) values(1, 'A', '80cm' , '上海')
insert into 商品目录表(ID,名称,规格,产地) values(2, 'A', '100cm', '上海')
insert into 商品目录表(ID,名称,规格,产地) values(3, 'A', '80cm' , '华北')
insert into 商品目录表(ID,名称,规格,产地) values(4, 'A', '100cm', '华北')
insert into 商品目录表(ID,名称,规格,产地) values(5, 'B', '50mm' , '湖北')
insert into 商品目录表(ID,名称,规格,产地) values(6, 'B', '80mm' , '湖北')
insert into 商品目录表(ID,名称,规格,产地) values(7, 'B', '50mm' , '广东')
insert into 商品目录表(ID,名称,规格,产地) values(8, 'B', '80mm' , '北京')
goif object_id('pubs..商品库存表') is not null
drop table 商品库存表
go
create table 商品库存表(商品ID int,入库批次 varchar(10),库存数量 int)
insert into 商品库存表(商品ID,入库批次,库存数量) values(1, '200704001', 10)
insert into 商品库存表(商品ID,入库批次,库存数量) values(1, '200704002', 40)
insert into 商品库存表(商品ID,入库批次,库存数量) values(1, '200704003', 50)
insert into 商品库存表(商品ID,入库批次,库存数量) values(2, '200704004', 30)
insert into 商品库存表(商品ID,入库批次,库存数量) values(2, '200704005', 20)
insert into 商品库存表(商品ID,入库批次,库存数量) values(3, '200704006', 10)
insert into 商品库存表(商品ID,入库批次,库存数量) values(3, '200704007', 40)
insert into 商品库存表(商品ID,入库批次,库存数量) values(5, '200704008', 50)
insert into 商品库存表(商品ID,入库批次,库存数量) values(5, '200704009', 30)
insert into 商品库存表(商品ID,入库批次,库存数量) values(6, '200704010', 20)
goselect * from
(
select a.名称 , a.规格 , a.产地 , isnull(b.入库批次,'') 入库批次, isnull(b.库存数量,0) 数量
from 商品目录表 a left join 商品库存表 b on a.ID = b.商品ID
union all
select a.名称 , 规格 = '' , 产地 = '' ,入库批次 = '' , sum(b.库存数量) 数量 from 商品目录表 a,商品库存表 b where a.ID = b.商品ID group by a.名称
) t
order by 名称 , case 规格 when '' then 1 else 2 end , case 数量 when 0 then 2 else 1 enddrop table 商品目录表,商品库存表/*
名称 规格 产地 入库批次 数量
---------- ---------- ---------- ---------- -----------
A 200
A 80cm 上海 200704001 10
A 80cm 上海 200704002 40
A 80cm 上海 200704003 50
A 100cm 上海 200704004 30
A 100cm 上海 200704005 20
A 80cm 华北 200704006 10
A 80cm 华北 200704007 40
A 100cm 华北 0
B 100
B 50mm 湖北 200704008 50
B 50mm 湖北 200704009 30
B 80mm 湖北 200704010 20
B 50mm 广东 0
B 80mm 北京 0(所影响的行数为 15 行)
*/
drop table 商品目录表
go
create table 商品目录表(ID int,名称 varchar(10),规格 varchar(10),产地 varchar(10))
insert into 商品目录表(ID,名称,规格,产地) values(1, 'A', '80cm' , '上海')
insert into 商品目录表(ID,名称,规格,产地) values(2, 'A', '100cm', '上海')
insert into 商品目录表(ID,名称,规格,产地) values(3, 'A', '80cm' , '华北')
insert into 商品目录表(ID,名称,规格,产地) values(4, 'A', '100cm', '华北')
insert into 商品目录表(ID,名称,规格,产地) values(5, 'B', '50mm' , '湖北')
insert into 商品目录表(ID,名称,规格,产地) values(6, 'B', '80mm' , '湖北')
insert into 商品目录表(ID,名称,规格,产地) values(7, 'B', '50mm' , '广东')
insert into 商品目录表(ID,名称,规格,产地) values(8, 'B', '80mm' , '北京')
goif object_id('pubs..商品库存表') is not null
drop table 商品库存表
go
create table 商品库存表(商品ID int,入库批次 varchar(10),库存数量 int)
insert into 商品库存表(商品ID,入库批次,库存数量) values(1, '200704001', 10)
insert into 商品库存表(商品ID,入库批次,库存数量) values(1, '200704002', 40)
insert into 商品库存表(商品ID,入库批次,库存数量) values(1, '200704003', 50)
insert into 商品库存表(商品ID,入库批次,库存数量) values(2, '200704004', 30)
insert into 商品库存表(商品ID,入库批次,库存数量) values(2, '200704005', 20)
insert into 商品库存表(商品ID,入库批次,库存数量) values(3, '200704006', 10)
insert into 商品库存表(商品ID,入库批次,库存数量) values(3, '200704007', 40)
insert into 商品库存表(商品ID,入库批次,库存数量) values(5, '200704008', 50)
insert into 商品库存表(商品ID,入库批次,库存数量) values(5, '200704009', 30)
insert into 商品库存表(商品ID,入库批次,库存数量) values(6, '200704010', 20)
goselect * from
(
select a.名称 , a.规格 , a.产地 , isnull(b.入库批次,'') 入库批次, isnull(b.库存数量,0) 数量
from 商品目录表 a left join 商品库存表 b on a.ID = b.商品ID
union all
select a.名称 , 规格 = '' , 产地 = '' ,入库批次 = '' , sum(b.库存数量) 数量 from 商品目录表 a,商品库存表 b where a.ID = b.商品ID group by a.名称
) t
order by 名称 , case 规格 when '' then 1 else 2 end , case 数量 when 0 then 2 else 1 enddrop table 商品目录表,商品库存表/*
名称 规格 产地 入库批次 数量
---------- ---------- ---------- ---------- -----------
A 200
A 80cm 上海 200704001 10
A 80cm 上海 200704002 40
A 80cm 上海 200704003 50
A 100cm 上海 200704004 30
A 100cm 上海 200704005 20
A 80cm 华北 200704006 10
A 80cm 华北 200704007 40
A 100cm 华北 0
B 100
B 50mm 湖北 200704008 50
B 50mm 湖北 200704009 30
B 80mm 湖北 200704010 20
B 50mm 广东 0
B 80mm 北京 0(所影响的行数为 15 行)
*/
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货