我创建了一个查询如下:
UPDATE [MyNewDatabase].[dbo].[df_umts_relation]
SET [MyNewDatabase].[dbo].[df_umts_relation].[target_rnc_rel] =
(CASE WHEN UMT.target_vendor_rel = 'HUA' THEN carrier.rnc ELSE SHO.ucell_rnc END )
FROM [MyNewDatabase].[dbo].[df_umts_relation] UMT LEFT JOIN [MyNewDatabase].[dbo].[df_umts_carrier] carrier
ON UMT.n_cell_name = carrier.cell_name_umts
LEFT JOIN [MyNewDatabase].[dbo].[esn_umts_intra_sho] SHO
ON UMT.n_cell_name = SHO.ucell
WHERE [MyNewDatabase].[dbo].[df_umts_relation].[technology] = 'UMTS'当我发现这个错误时:
The multi-part identifier "MyNewDatabase.dbo.df_umts_relation.technology" could not be bound.在没有where条件的情况下,查询工作良好,如下所示:
UPDATE [MyNewDatabase].[dbo].[df_umts_relation]
SET [MyNewDatabase].[dbo].[df_umts_relation].[target_rnc_rel] =
(CASE WHEN UMT.target_vendor_rel = 'HUA' THEN carrier.rnc ELSE SHO.ucell_rnc END )
FROM [MyNewDatabase].[dbo].[df_umts_relation] UMT LEFT JOIN [MyNewDatabase].[dbo].[df_umts_carrier] carrier
ON UMT.n_cell_name = carrier.cell_name_umts
LEFT JOIN [MyNewDatabase].[dbo].[esn_umts_intra_sho] SHO
ON UMT.n_cell_name = SHO.ucell所以,我需要使用WHERE正确地执行这个查询。
发布于 2020-02-28 10:45:21
如果我的未识别信息是正确的,那么您正在为tableMyNewDatabase.dbo.df_umts_relation使用2别名,尝试如下。
UPDATE UMT
SET UMT.[target_rnc_rel] = (
CASE
WHEN UMT.target_vendor_rel = 'HUA'
THEN carrier.rnc
ELSE SHO.ucell_rnc
END
)
FROM [MyNewDatabase].[dbo].[df_umts_relation] UMT
LEFT JOIN [MyNewDatabase].[dbo].[df_umts_carrier] carrier ON UMT.n_cell_name = carrier.cell_name_umts
LEFT JOIN [MyNewDatabase].[dbo].[esn_umts_intra_sho] SHO ON UMT.n_cell_name = SHO.ucell
WHERE UMT.[technology] = 'UMTS'https://stackoverflow.com/questions/60449572
复制相似问题