我正面临一个奇怪的SQL Server (T-SQL)的行为,当涉及到使用UNION ALL
和必须填充一个表(一个由UNION
命令连接)。
Firstname Lastname Date
--------- -------- ----
Peter Pan 2013-01-21 12:29:55.000
Paul Am 2013-01-22 12:39:45.000
和表2:
FN LN
--------- --------
Laura Loeb
Lisa Lefteye
我想对两个表做一个UNION ALL
。这只能通过用"假的"第三列"填充"表2来实现(因为它没有"data"列),如下所示:
SELECT
Firstname AS FName, Lastname AS LName, Date AS TheDate
FROM Table1
UNION ALL
SELECT
FN AS FName, LN AS LName, NULL AS TheDate
FROM Table2
我的问题是:SQL Server给我一个错误消息,告诉我它不能转换为DateTime
类型。
我100%确定表1中列Date
的数据类型设置为DateTime
,也允许NULL值。
我试着设置一个虚拟的日期,像这样:
... FN AS FName, LN AS LName, '2013-03-08' AS TheDate ...
我已经尝试设置当前日期,像这样:
... FN AS FName, LN AS LName, getdate() AS TheDate ...
以上都不行
然而,我知道一般的解决方案(通过使用"NULL AS Columnname"填充缺失的列)工作…
有谁知道如何解决这个问题吗?提前非常感谢!
不知道是什么问题…
SELECT '1' A, '2' B, GETDATE() C
UNION ALL
SELECT '1', '2', NULL
| A | B | C |----------------------------------------| 1 | 2 | March, 08 2013 16:34:31+0000 || 1 | 2 | (null) |
你试过CAST
你的NULL
吗?
你已经张贴的作品很好。
SELECT 'Frank' As 'Name', 'Grimes' as 'Name2', GETDATE() as 'TheDate'
UNION ALL
SELECT 'Jim' As 'Name', 'Bloggs' as 'Name2', null as 'TheDate'