日期:2014-05-17 浏览次数:20575 次
SELECT ISNULL(a.年,b.年) 年,ISNULL(a.月,b.月) 月
,ISNULL(a.预算数量,0) 预算数量
,ISNULL(a.ForeCast数量,0) ForeCast数量
,ISNULL(b.数量,0) 实际数量
--差额計算這裡省略
from
(
SELECT ISNULL(a.年,b.年) 年,ISNULL(a.月,b.月) 月
,ISNULL(a.数量,0) 预算数量
,ISNULL(b.数量,0) ForeCast数量
FROM 预算 a
FULL JOIN ForeCast b ON a.年=b.年 AND a.月=b.月
) a
FULL JOIN 实际 b ON a.年=b.年 AND a.月=b.月
if OBJECT_ID('tempdb..#预算', 'u') is not null drop table #预算;
go
create table #预算( [年] int, [月] int, [产品] varchar(100), [数量] INT);
insert #预算
select '2013','9','甲','100'
if OBJECT_ID('tempdb..#ForeCast', 'u') is not null drop table #ForeCast;
go
create table #ForeCast([年] int, [月] int, [产品] varchar(100), [数量] INT);
insert #ForeCast
select '2013','9','甲','110'
if OBJECT_ID('tempdb..#实际', 'u') is not null drop table #实际;
go
create table #实际([年] int, [月] int, [产品] varchar(100), [数量] INT);
insert #实际
select '2013','9','甲','120' union all
select '2013','9','乙','150'
--SQL:
SELECT
年=COALESCE(a.年, b.年),
月=COALESCE(a.月, b.月),
产品=COALESCE(a.产品, b.产品),
a.数量,
[ForeCast数量] = c.数量,
实际数量 = b.数量,
预算实际差额 = b.数量 - a.数量,
Fore实际差额 = c.数量 - a.数量