有二张表分别命名为a和b
a表是库存表数据如下:
编号 名称 库存数量 最小库存数量
001 鼠标 20 5
002 硬盘 15 3
003 光驱 20 8
b表是定单表数据如下:
编号 名称 数量
001 鼠标 18
003 光驱 10 现在怎么用sql语句来判断出a表减b表后小于最小库存数量的名称呢?
a表是库存表数据如下:
编号 名称 库存数量 最小库存数量
001 鼠标 20 5
002 硬盘 15 3
003 光驱 20 8
b表是定单表数据如下:
编号 名称 数量
001 鼠标 18
003 光驱 10 现在怎么用sql语句来判断出a表减b表后小于最小库存数量的名称呢?
insert A
select '001','鼠标',20,5 union all
select '002','硬盘',15,3 union all
select '003','光驱',20,8
select * from Acreate table B(编号 char(3),名称 varchar(20),数量 int)
insert B
select '001','鼠标',18 union all
select '001','鼠标',1 union all -- 加多的测试数据
select '003','光驱',10
select * from Bselect A.编号,A.名称,A.库存数量-isnull(B.数量,0)-A.最小库存数量 from A left join
(
select 编号,sum(数量) as 数量 from B group by 编号
)B
on A.编号=B.编号
where A.库存数量-isnull(B.数量,0)-A.最小库存数量<0drop table A,B
(select 编号,名称,sum(库存数量) as 数量 from
(select 编号,名称,库存数量 from a
union all
select 编号,名称,-数量 from b)c group by 编号,名称) e right join a on
e.编号=a.编号 and e.名称=a.名称 and e.数量<a.最小库存数量 where e.编号 is null
INSERT @T SELECT 1,'鼠标',20,5
UNION ALL SELECT 2,'硬盘',15,3
UNION ALL SELECT 3,'光驱',20,8
------
DECLARE @T1 TABLE(编号 INT,名称 VARCHAR(10),数量 INT)
INSERT @T1 SELECT 1,'鼠标',18
UNION ALL SELECT 3,'光驱',10SELECT
编号,
名称,
库存数据= CASE WHEN ISNULL((SELECT A.库存数量-数量 FROM @T1 WHERE 编号=A.编号),A.库存数量)>A.最小库存数量 THEN '不缺' ELSE '缺' END
FROM @T A
select A.编号,A.名称,(A.库存数量 -B.数量)as 数量 from A left join B on A.编号=B.编号
where (A.库存数量 -B.数量)<A.最小库存数量
b表是定单表数据如下订单表是明细的还是汇总的啊?