我有一种情况,我必须组合两个表而不会丢失任何数据.这两个表有不同的结构.以下是我的表格的结构
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而不是''.怎么消除这个?
使用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)
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |