首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求一段sql,该怎么处理

2012-02-01 
求一段sql,急!表1计划商品,日期,计划数量,-------------------牙膏,2007-7-7,10铅笔,2007-7-7,10橡皮,2007

求一段sql,急!
表1计划

商品,日期,计划数量,
-------------------
牙膏,2007-7-7,10
铅笔,2007-7-7,10
橡皮,2007-7-7,5
钢笔,2007-7-7,10

表2实际

商品,日期,销售数量,
-------------------
牙膏,2007-7-7,10
铅笔,2007-7-7,5
橡皮,2007-7-7,10
格尺,2007-7-7,10

求表3比较

商品,日期,计划数量,销售数量,
-------------------
牙膏,2007-7-7,10,10
铅笔,2007-7-7,10,5
橡皮,2007-7-7,5   ,10
钢笔,2007-7-7,10,0
格尺,2007-7-7,0   ,10

[解决办法]
select a.商品,isNull(b.日期,c.日期),
isNull(b.计划数量,0) as 计划数量,
isNull(c.销售数量,0) as 销售数量
from
(select 商品 from 表1 union
select 商品 from 表2) a
left join 表1 b on a.商品=b.商品
left join 表2 c on a.商品=c.商品
[解决办法]
结果
商品日期计划数量销售数量
钢笔2007-7-7100
格尺2007-7-7010
铅笔2007-7-7105
橡皮2007-7-7510
牙膏2007-7-71010
----------------------------------------------

SELECT
计划.商品 AS 商品,
计划.日期 AS 日期,
计划.计划数量 AS 计划数量,
(SELECT SUM(销售数量) FROM 实际 WHERE 计划.商品=实际.商品 AND 计划.日期=实际.日期) AS 销售数量
FROM 计划
WHERE EXISTS (
SELECT *
FROM 实际
WHERE 计划.商品=实际.商品 AND 计划.日期=实际.日期
)
UNION
SELECT
实际.商品 AS 商品,
实际.日期 AS 日期,
0 AS 计划数量,
实际.销售数量 AS 销售数量
FROM 实际
WHERE NOT EXISTS (
SELECT *
FROM 计划
WHERE 计划.商品=实际.商品 AND 计划.日期=实际.日期
)
UNION
SELECT
计划.商品 AS 商品,
计划.日期 AS 日期,
计划.计划数量 AS 计划数量,
0 AS 销售数量
FROM 计划
WHERE NOT EXISTS (
SELECT *
FROM 实际
WHERE 计划.商品=实际.商品 AND 计划.日期=实际.日期
)

热点排行