SQL 插入临时表 的问题

chenyan15888 2010-07-22 03:53:12
临时表
序号,计划日期,金额 ,实际日期,金额

数据来源(先)
插入数据
序号,计划日期, 金额
1 2010-01-01 100
2 2010-02-01 100
3 2010-03-01 100
4 2010-04-01 100
5 2010-05-01 100
要插入的实际数据
序号,实际日期, 金额
1 2010-01-01 200
2 2010-02-01 200
3 2010-03-01 200
4 2010-04-01 200
5 2010-05-01 200
6 2010-06-01 200
7 2010-07-01 200
要求显示的数据
序号,计划日期,金额 ,实际日期,金额
1 2010-01-01 100 2010-01-01 200
2 2010-02-01 100 2010-02-01 200
3 2010-03-01 100 2010-03-01 200
4 2010-04-01 100 2010-04-01 200
5 2010-05-01 100 2010-05-01 200
6 1900-01-01 0 2010-06-01 200
7 1900-01-01 0 2010-07-01 200

请问怎么插入方便,计划数据与实际 分别来源于两个不同表
...全文
362 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanzhouqi 2010-07-24
  • 打赏
  • 举报
回复
直接用日期关联,就好了
百年树人 2010-07-24
  • 打赏
  • 举报
回复
两表是以序号关联还是以日期关联?
xman_78tom 2010-07-24
  • 打赏
  • 举报
回复

if object_id('tempdb.dbo.#a') is not null drop table #a
create table #a (序号 int,计划日期 smalldatetime,金额 int)
insert into #a
select 1,'2010-01-01',100 union all
select 2,'2010-02-01',100 union all
select 3,'2010-03-01',100 union all
select 4,'2010-04-01',100 union all
select 5,'2010-05-01',100

if object_id('tempdb.dbo.#b') is not null drop table #b
create table #b (序号 int,实际日期 smalldatetime,金额 int)
insert into #b
select 1,'2010-01-01',200 union all
select 2,'2010-02-01',200 union all
select 3,'2010-03-01',200 union all
select 4,'2010-04-01',200 union all
select 5,'2010-05-01',200 union all
select 6,'2010-06-01',200 union all
select 7,'2010-07-01',200

select
coalesce(#a.序号,#b.序号) 序号,
isnull(#a.计划日期,'') 计划日期,
ISNULL(#a.金额,0) 金额,
isnull(#b.实际日期,'') 实际日期,
ISNULL(#b.金额,0) 金额
from #a full outer join #b
on #a.序号=#b.序号;
claro 2010-07-24
  • 打赏
  • 举报
回复
纯帮顶

没看懂
  • 打赏
  • 举报
回复
lz的这两个表完全可以设计成一个表的呀,塞数据只对这一个表操作(无则insert,有则update),会方便些
chenyan15888 2010-07-22
  • 打赏
  • 举报
回复
楼上的谢谢你,不过油个问题, a ,b 两个序号不确定那个大,有时候是 A 的 大 ,有时候是B的大
zc_0101 2010-07-22
  • 打赏
  • 举报
回复
--========+++++++++++++++++++++++++++++++++++==========
--======= 每天都在进步,却依然追不上地球的自传=========
--======= By: zc_0101 At:2010-07-22 15:55:22=========
--========++++++++++++++++++++++++++++++++++++=========
--> 测试数据: #a
if object_id('tempdb.dbo.#a') is not null drop table #a
create table #a (序号 int,计划日期 smalldatetime,金额 int)
insert into #a
select 1,'2010-01-01',100 union all
select 2,'2010-02-01',100 union all
select 3,'2010-03-01',100 union all
select 4,'2010-04-01',100 union all
select 5,'2010-05-01',100
--> 测试数据: #b
if object_id('tempdb.dbo.#b') is not null drop table #b
create table #b (序号 int,实际日期 smalldatetime,金额 int)
insert into #b
select 1,'2010-01-01',200 union all
select 2,'2010-02-01',200 union all
select 3,'2010-03-01',200 union all
select 4,'2010-04-01',200 union all
select 5,'2010-05-01',200 union all
select 6,'2010-06-01',200 union all
select 7,'2010-07-01',200

----------------查询------------
select b.序号,isnull(a.计划日期,'1900-01-01') 计划日期,isnull(a.金额,0) 金额,b.实际日期,b.金额 from #a a right join #b b on a.序号=b.序号
----------------结果--------------
/*
序号 计划日期 金额 实际日期 金额
1 2010-01-01 00:00:00 100 2010-01-01 00:00:00 200
2 2010-02-01 00:00:00 100 2010-02-01 00:00:00 200
3 2010-03-01 00:00:00 100 2010-03-01 00:00:00 200
4 2010-04-01 00:00:00 100 2010-04-01 00:00:00 200
5 2010-05-01 00:00:00 100 2010-05-01 00:00:00 200
6 1900-01-01 00:00:00 0 2010-06-01 00:00:00 200
7 1900-01-01 00:00:00 0 2010-07-01 00:00:00 200
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧