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之间,那么使用一个日期字段和数字字段而不是两个如何?;)。