Sql 如何组合这两个表并创建一个新表?
如何合并两个表并创建新表 第一张表:Sql 如何组合这两个表并创建一个新表?,sql,sql-server,Sql,Sql Server,如何合并两个表并创建新表 第一张表: ExitDate | fullname | outputnumber ------------------------------------------------ 2012/01/01 a 10 2012/01/06 b 2 2012/01/08 c 3 2012/01/12
ExitDate | fullname | outputnumber
------------------------------------------------
2012/01/01 a 10
2012/01/06 b 2
2012/01/08 c 3
2012/01/12 d 4
第二桌
inputnumber | date
-------------------------------
100 2012/01/05
150 2012/01/07
200 2012/01/10
答案表
ExitDate | fullname | outputnumber | inputnumber | date
-------------------------------------------------------------------------------
2012/01/01 a 10 - -
- - - 100 2012/01/05
2012/01/06 b 2 - -
- - - 150 2012/01/07
2012/01/08 c 3 - -
- - - 200 2012/01/10
2012/01/12 d 4 - -
注意:日期和位置很重要,我正在使用sql server如果我理解正确,您需要
union all
。大概是这样的:
select * from (
select ExitDate, fullname, outputnumber, NUll as inputnumber, NUll as [date] from first_table
union all
select NUll as ExitDate, NUll as fullname, NUll as outputnumber, inputnumber, [date] from second_table
) t
order by coalesce(ExitDate, [date])
然后,整个结果按ExitDate
和date
列的组合日期排序
如果我理解正确,您需要
union all
。大概是这样的:
select * from (
select ExitDate, fullname, outputnumber, NUll as inputnumber, NUll as [date] from first_table
union all
select NUll as ExitDate, NUll as fullname, NUll as outputnumber, inputnumber, [date] from second_table
) t
order by coalesce(ExitDate, [date])
然后,整个结果按ExitDate
和date
列的组合日期排序
我想你可以有这样一张更好的桌子:
select *
from (
select fullname, 0 as io, outputnumber as number, ExitDate as date
from table1
union all
select '-', 1, inputnumber, date) t
order by date, io;
我想你可以有一张这样更好的桌子:
select *
from (
select fullname, 0 as io, outputnumber as number, ExitDate as date
from table1
union all
select '-', 1, inputnumber, date) t
order by date, io;
您可以使用
完全外部联接
获得所需的精确输出:
select t1.*, t2.*
from t1 full outer join
t2
on 1 = 0
order by coalesce(t1.exitdate, t2.date);
您可以使用
完全外部联接
获得所需的精确输出:
select t1.*, t2.*
from t1 full outer join
t2
on 1 = 0
order by coalesce(t1.exitdate, t2.date);
看来你需要联合所有人。奥托·沙瓦泽:你能告诉我一个问题吗?你说的位置是什么意思?组合行的顺序意味着第二个表中的日期字段介于第一个表中的exitdate之间,那么使用一个日期字段和数字字段而不是两个如何?;)。看来你需要联合所有人。奥托·沙瓦泽:你能告诉我一个问题吗?你说的位置是什么意思?组合行的顺序意味着第二个表中的日期字段介于第一个表中的exitdate之间,那么使用一个日期字段和数字字段而不是两个如何?;)。