从三个不同的表创建一个表

use*_*980 7 sql-server create-table

我在SQL中有三个表,我需要将它们合并为一个.我需要一个表中所有表中的所有字段.所有表格包含三个不同年份的相同字段.我写了一个代码:

CREATE TABLE COL_TBL_TRAINING_ALL_YEARS AS(
SELECT 
COL_TBL_2010_TRN_RESULTS_new.*,
COL_TBL_TRN_RESULTS_GEMS_2011.*, 
COL_TBL_TRN_RESULTS_GEMS_2012.*
FROM COL_TBL_2010_TRN_RESULTS_new,
COL_TBL_TRN_RESULTS_GEMS_2011, 
COL_TBL_TRN_RESULTS_GEMS_2012
WHERE COL_TBL_2010_TRN_RESULTS_new.SYS_EMP_ID_NR = COL_TBL_TRN_RESULTS_GEMS_2011.SYS_EMP_ID_NR = COL_TBL_TRN_RESULTS_GEMS_2012.SYS_EMP_ID_NR)
Run Code Online (Sandbox Code Playgroud)

并且我在"AS"一词附近出现了错误的语法,并且'='附近的语法不正确

我已经阅读了我的SQL书籍,似乎无法找到解决方法来做到这一点,任何帮助将不胜感激.

And*_*ttó 9

你需要两个做两步:

  1. 使用UNION ALL,就像它提到的那样.但如果缺少某列,则应使用NULL该列.

  2. 您应该将结果插入新表中.

所以看起来应该是这样的:

SELECT * 
INTO   yournewtablename 
FROM   (SELECT col1, 
               col2, 
               col3 
        FROM   col_tbl_2010_trn_results_new 
        UNION ALL 
        SELECT col1, 
               col2, 
               col3 
        FROM   col_tbl_trn_results_gems_2011 
        UNION ALL 
        SELECT col1, 
               col2, 
               NULL AS Col3 
        FROM   col_tbl_trn_results_gems_2012) n 
Run Code Online (Sandbox Code Playgroud)

这是一个演示:SQL FIDDLE