34,837
社区成员




--> liangCK小梁 于2008-09-21
--> 生成测试数据: #TA
if object_id('tempdb.dbo.#TA') is not null drop table #TA
create table #TA (编号 int,产品编码 int,出库数量 int)
insert into #TA
select 1,1,6 union all
select 2,1,1 union all
select 3,1,5 union all
select 4,2,3 union all
select 5,2,2 union all
select 6,3,3
--> liangCK小梁 于2008-09-21
--> 生成测试数据: #TB
if object_id('tempdb.dbo.#TB') is not null drop table #TB
create table #TB (编号 int,产品编码 int,数量 int)
insert into #TB
select 1,1,5 union all
select 2,2,4 union all
select 3,3,2
--SQL查询如下:
SELECT A.编号,
A.产品编码,
A.出库数量,
B.数量,
[对应分配数量]=CASE
WHEN A.p数量<B.数量
THEN A.出库数量
ELSE
CASE
WHEN B.数量-A.s数量<=0 THEN 0
ELSE B.数量-A.s数量
END
END
FROM
(
SELECT *,
p数量=ISNULL((
SELECT SUM(出库数量)
FROM #TA
WHERE 产品编码=t.产品编码
AND 编号<=t.编号
),0),
s数量=ISNULL((
SELECT SUM(出库数量)
FROM #TA
WHERE 产品编码=t.产品编码
AND 编号<t.编号
),0)
FROM #TA AS t
) AS A
JOIN
#TB AS B
ON A.产品编码=B.产品编码
GO
/*
编号 产品编码 出库数量 数量 对应分配数量
----------- ----------- ----------- ----------- -----------
1 1 6 5 5
2 1 1 5 0
3 1 5 5 0
4 2 3 4 3
5 2 2 4 1
6 3 3 2 2
(6 行受影响)
*/
--> liangCK小梁 于2008-09-21
--> 生成测试数据: #TA
if object_id('tempdb.dbo.#TA') is not null drop table #TA
create table #TA (编号 int,产品编码 int,出库数量 int)
insert into #TA
select 1,1,2 union all
select 2,1,1 union all
select 3,1,5 union all
select 4,2,3 union all
select 5,2,2 union all
select 6,3,3
--> liangCK小梁 于2008-09-21
--> 生成测试数据: #TB
if object_id('tempdb.dbo.#TB') is not null drop table #TB
create table #TB (编号 int,产品编码 int,数量 int)
insert into #TB
select 1,1,5 union all
select 2,2,4 union all
select 3,3,2
--SQL查询如下:
SELECT A.编号,
A.产品编码,
A.出库数量,
B.数量,
[对应分配数量]=CASE
WHEN A.p数量<B.数量
THEN A.出库数量
ELSE
B.数量-A.s数量
END
FROM
(
SELECT *,
p数量=ISNULL((
SELECT SUM(出库数量)
FROM #TA
WHERE 产品编码=t.产品编码
AND 编号<=t.编号
),0),
s数量=ISNULL((
SELECT SUM(出库数量)
FROM #TA
WHERE 产品编码=t.产品编码
AND 编号<t.编号
),0)
FROM #TA AS t
) AS A
JOIN
#TB AS B
ON A.产品编码=B.产品编码
/*
编号 产品编码 出库数量 数量 对应分配数量
----------- ----------- ----------- ----------- -----------
1 1 2 5 2
2 1 1 5 1
3 1 5 5 2
4 2 3 4 3
5 2 2 4 1
6 3 3 2 2
(6 行受影响)
*/