我试图使用SELECT INTO
和UNION ALL
将3个表连接在一起。使用UNION ALL时出现'转换失败...',但单独运行查询时可以使用
表1使用了一些Ltrim(Rtrim())
和CONVERT
命令,而与其他两个表,我只是把他们的列出来,并粘贴到这个组合表。
当我尝试运行查询,我得到一个错误消息说:
转换失败从字符字符串 转换日期和/或时间。
但是单独处理表格,一切都很顺利。
这是什么原因,我该如何解决?
编辑:这是前两个表的联合的示例;
SELECT
, CONVERT(DATE, [GL DATE], 101) AS [Date1]
, CONVERT(FLOAT, [Amount_01]) AS [Amt]
INTO #big_table
FROM table1
UNION ALL
[POSDATE] AS [Date1]
, [NET] AS [Amt] NULL AS [Date_Up]
, NULL AS [Time_up]
,
FROM table2
编辑#2:
我已经找到了麻烦列,它们是 [日期1]和[金额。
对于表1,这里是从这两列的示例数据:
Date1 Amt
4/28/2014 216.43
4/28/2014 1526.61
4/28/2014 13.61
4/27/2014 177.9
4/27/2014 489.58
对于表2:
Date1 Amt
30/04/2014 -7501.9
30/04/2014 0
30/03/2014 -75201.9
30/03/2014 0
28/02/2014 -25247.93
28/02/2014 0
对于表3:
Date1 Amt
21/04/2014 100,000,000.00
21/04/2014 -2,312,314.44
21/04/2014 -100,000,000.00
21/04/2014 56.41
26/04/2014 2,312,314.44
26/04/2014 -125.4
如果我没有错误,表2和表3中的Date1
的格式与表1相比存在问题,因为2和3是:DD/MM/YYYY
,而表1是MM/DD/YYYY
。
但为什么不是Amt
能正常工作?可以将非正数转换为浮点数吗?
我该如何解决此问题并进行有效的转换?
编辑3:对于表3:
我尝试使用 CONVERT(DATE,[日期1],103)和它的工作, 但尽管具有相同的输入端,同样的策略失败对于表2 /输出结构 - 这可能是什么原因?
我再次收到:从字符串转换日期和/或时间时
转换失败。
查找那些从字符串转换为datetime的列,它可能与列中日期值的格式有关。 – Harsh
但是,当单独运行查询时,它工作正常。这不是很奇怪吗?或者,在两个表上使用'UNION ALL'有一个问题,一个行条目从字符串转换为日期/时间,另一个保留为字符串,但属于同一列? – elbarto
例如,如果您正在对齐“DATETIME”类型的列和“VARCHAR”类型的列,那么它会尝试自动将“DATETIME”列转换为“VARCHAR”,并且在您的情况下会失败。删除语句中的列,直到找到违规列对,找到问题的数据然后回传,我们可以进一步提供帮助 –