在 T-SQL 中使用此功能在 UNION 中进行转换时,CAST 失败



我正在尝试使用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 时转换失败。

您能否建议使用最适合用于CASTCONVERT功能的 T-SQL 查询UNION

工会的后半部分如下:

很可能您正在尝试将数据插入到结构不正确的表中(第二列的类型为 int(。

您也可以尝试再次强制转换该值:

CAST(CAST(SS.Schedule_Subshift_ID AS VARCHAR(20)) + ' 1:2' AS VARCHAR(24)) [Unique Visit ID]

相关内容

最新更新