掏出库存数大于0的记录
取出库存数大于0的记录
采购表
id 采购合同号 颜色 采购数量
1 111 黄色 100
2 111 黄色 50
3 333 红色 200
入库表
id 采购合同号 颜色 入库数量
1 111 黄色 150
取出库存数大于0的记录
------解决方案--------------------
按照你的数据应该是没有记录
采购表
id 采购合同号 颜色 采购数量
1 111 黄色 100
2 111 黄色 50
3 333 红色 200
入库表
id 采购合同号 颜色 入库数量
1 111 黄色 150
取出库存数大于0的记录
------解决方案--------------------
按照你的数据应该是没有记录
----------------------------------------------------------------
-- Author :DBA_HuangZJ(发粪涂墙)
-- Date :2014-05-24 11:56:57
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
-- Apr 2 2010 15:48:46
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[采购表]
if object_id('采购表') is not null drop table [采购表]
go
create table [采购表]([id] int,[采购合同号] int,[颜色] nvarchar(4),[采购数量] int)
insert [采购表]
select 1,111,N'黄色',100 union all
select 2,111,N'黄色',50 union all
select 3,333,N'红色',200
--> 测试数据[入库表]
if object_id('入库表') is not null drop table [入库表]
go
create table [入库表]([id] int,[采购合同号] int,[颜色] nvarchar(4),[入库数量] int)
insert [入库表]
select 1,111,N'黄色',150
SELECT [采购合同号],[颜色],SUM([入库数量])[剩余库存]
FROM (
select [采购合同号],[颜色],[入库数量] from [入库表]
UNION ALL
select [采购合同号],[颜色],-1*[采购数量] from [采购表]
)a
GROUP BY [采购合同号],[颜色]
HAVING SUM([入库数量])>0
----------------结果----------------------------
/*
采购合同号 颜色 剩余库存
----------- ---- -----------
*/