表1
仓库 产品编码 结存数量
产品库 A1 10
预留库 A1 20
产品库 B1 30
预留库 B1 20表2
产品编码 产品库结存 预留库存
A1 80 10
B1 50 5
C1 30 20货物档案
产品编码 产品名称
A1 A产品
B1 B产品将表1和表2合并表3表3结构 产品编码 产品名称 全库结存 预留库存 可用结存
A1 A产品 110 20 90
B1 B产品 100 25 85
C1 C产品 30 20 10全库结存=表1库存+表2库存
预留库存=表1预留库存+表2预留库存
可用结存=全库结存-预留库存
仓库 产品编码 结存数量
产品库 A1 10
预留库 A1 20
产品库 B1 30
预留库 B1 20表2
产品编码 产品库结存 预留库存
A1 80 10
B1 50 5
C1 30 20货物档案
产品编码 产品名称
A1 A产品
B1 B产品将表1和表2合并表3表3结构 产品编码 产品名称 全库结存 预留库存 可用结存
A1 A产品 110 20 90
B1 B产品 100 25 85
C1 C产品 30 20 10全库结存=表1库存+表2库存
预留库存=表1预留库存+表2预留库存
可用结存=全库结存-预留库存
'全库结存'=(
Isnull((Select sum(Tab1.结存数量) From Tab1
Where Tab1.产品编码=Tab3.产品编码
Group By Tab1.产品编码),0)
+Tab2.产品库结存),
'预留库存'=(
Isnull((Select sum(Tab1.结存数量) From Tab1
Where Tab1.产品编码=Tab3.产品编码
And Tab1.仓库='预留库'
Group By Tab1.产品编码),0)
+Tab2.预留库存),
'可用结存'=(Isnull((Select sum(Tab1.结存数量) From Tab1
Where Tab1.产品编码=Tab3.产品编码
And Tab1.仓库='产品库'
Group By Tab1.产品编码),0)
+Tab2.产品库结存)
From Tab2,Tab3
Where Tab3.产品编码=Tab2.产品编码
from
(
select 产品编码 ,sum(产品库存) as 产品库存,sum(预留库存) as 预留库存 from
(
SELECT 产品编码 AS 产品编码,产品库结存 AS 产品库存,预算库结存 AS 预留库存 FROM dbo.表2
UNION ALL
SELECT 产品编码 AS 产品编码,结存数量 AS 产品库存,0 AS 预留库存 FROM dbo.表1
UNION ALL
SELECT 产品编码 AS 产品编码,0 AS 产品库存,结存数量 AS 预留库存 FROM dbo.表1 WHERE 仓库='预留库'
) AS 库存 group by 产品编码
) aa inner join dbo.货物档案 bb on aa.产品编码=bb.产品编码 order by aa.产品编码
from
(
select 产品编码 ,sum(产品库存) as 产品库存,sum(预留库存) as 预留库存 from
(
SELECT 产品编码 AS 产品编码,产品库结存 AS 产品库存,预算库结存 AS 预留库存 FROM dbo.表2
UNION ALL
SELECT 产品编码 AS 产品编码,结存数量 AS 产品库存,0 AS 预留库存 FROM dbo.表1
UNION ALL
SELECT 产品编码 AS 产品编码,0 AS 产品库存,结存数量 AS 预留库存 FROM dbo.表1 WHERE 仓库='预留库'
) AS 库存 group by 产品编码
) aa inner join dbo.货物档案 bb on aa.产品编码=bb.产品编码 order by aa.产品编码
'全库结存'=(
Isnull((Select sum(Tab1.结存数量) From Tab1
Where Tab1.产品编码=Tab3.产品编码
Group By Tab1.产品编码),0)
+Tab2.产品库结存),
'预留库存'=(
Isnull((Select sum(Tab1.结存数量) From Tab1
Where Tab1.产品编码=Tab3.产品编码
And Tab1.仓库='预留库'
Group By Tab1.产品编码),0)
+Tab2.预留库存),
'可用结存'=(Isnull((Select sum(Tab1.结存数量) From Tab1
Where Tab1.产品编码=Tab3.产品编码
And Tab1.仓库='产品库'
Group By Tab1.产品编码),0)
+Tab2.产品库结存)
From Tab2,Tab3
Where Tab3.产品编码=Tab2.产品编码 GROUP BY Tab3.产品编码
这个临时表和表2进行连接 就能得到想要的结果了