我正在尝试使用CAST
来连接唯一标识符
int数据类型。当我在单个选择语句中运行脚本时,它可以工作,但是当我使用与另一个查询的联合一起运行它时,我收到错误消息:
Msg 245,级别 16,状态 1,第 31
行 将 varchar 值"211870 1:2"转换为数据类型 int 时转换失败。
请参阅以下查询:
SELECT DISTINCT
CASE
WHEN SHIFT_CODE = '1:2 Support'
THEN '3'
ELSE ''
END [Datatype Id],
CAST(SS.Schedule_Subshift_ID AS VARCHAR(20)) + ' 1:2' [Unique Visit ID]
'' [Date],
'' [Start Time],
''+ ',' [End Time],
''+ ',,,' [Unique Client ID],
'' [Client Forename]
FROM
Subshift
UNION
SELECT DISTINCT
CASE
WHEN CAST(CAST(EE.Start_Date_SK AS VARCHAR(255)) AS DATE) >= (GETDATE() - 41)
THEN ' 11 '
ELSE ''
END [DataTypeID],
'' [Unique Visit ID],
'' [Date],
'' [Start Time],
''+ ',' [End Time],
''+ ',,,' [Unique Client ID],
'' [Client Forename]
FROM
Subshift
我在不使用 Union 的情况下运行它时得到的结果
DataTypeID Unique Visit ID Date Start Time End Time
3 272574 1:2 20/01/2020 19:00 22:00,
3 272575 1:2 23/01/2020 19:00 22:00,
3 272575 1:2 23/01/2020 19:00 22:00,`
使用Union时得到的结果:
Msg 245,级别 16,状态 1,第 31
行 将 varchar 值"211870 1:2"转换为数据类型 int 时转换失败。
您能否建议使用最适合用于CAST
和CONVERT
功能的 T-SQL 查询UNION
?
工会的后半部分如下:
很可能您正在尝试将数据插入到结构不正确的表中(第二列的类型为 int(。
您也可以尝试再次强制转换该值:
CAST(CAST(SS.Schedule_Subshift_ID AS VARCHAR(20)) + ' 1:2' AS VARCHAR(24)) [Unique Visit ID]