sql server合并两个具有不同结构的表

roc*_*ock 0 sql sql-server

我有一种情况,我必须组合两个表而不会丢失任何数据.这两个表有不同的结构.以下是我的表格的结构

TABLE A 
ID_NO INT,
Ship_Date DATE,
Status varchar(10),
total decimal(12,2)

TABLE B
ID_NO INT,
Status varchar(10),
total decimal(12,2)
Run Code Online (Sandbox Code Playgroud)

我通过在表B中包含一个虚拟列来尝试使用UNION ALL,如下所示

TABLE B
ID_NO INT,
'',
Status varchar(10),
total decimal(12,2)
Run Code Online (Sandbox Code Playgroud)

但在结果集中,我得到1900-01-01作为Ship_Date而不是''.怎么消除这个?

Hol*_*ndt 5

使用NULL值而不是空字符串.如果您不介意将Ship_Date结果作为字符串,则可以将UNION包装在另一个select语句中.

SELECT U._ID_NO, 
       CASE WHEN U.Ship_Date IS NULL 
               THEN ''
               ELSE CONVERT(NVARCHAR(50), U.Ship_Date,101) END AS Ship_Date,
       U.Status, 
       U.total 
FROM
(
  SELECT A.ID_NO, A.Ship_Date, A.Status, A.total 
  FROM TableA

  UNION ALL

  SELECT B.ID_NO, NULL AS Ship_Date, B.Status, B.total 
  FROM TableB
) AS U
Run Code Online (Sandbox Code Playgroud)