Msg 4145, уровень 15, состояние 1, строка 5 Выражение не булева типа, указанное в контексте, где ожидается условие, рядом с 'ucell' - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь добавить другой столбец, используя LEFT JOIN после ON, так как я хочу посмотреть, объединить несколько столбцов

Поэтому я попытался использовать что-то вроде этого

UPDATE [toolDB].[dbo].[esn_missing_in_DF_umts] 
SET [toolDB].[dbo].[esn_missing_in_DF_umts].[target_rnc] = 
             (CASE 
                 WHEN ESN_M_UMTS.target_vendor = 'HUA' 
                    THEN umts_carrier.rnc 
                    ELSE SHO.ucell_rnc 
              END)
FROM [toolDB].[dbo].[esn_missing_in_DF_umts] ESN_M_UMTS
LEFT JOIN [toolDB].[dbo].[df_umts_carrier] umts_carrier ON  ESN_M_UMTS.n_cell_name = umts_carrier.cell_name_umts
LEFT JOIN [toolDB].[dbo].[esn_umts_intra_sho] SHO ON ESN_M_UMTS.n_cell_name = SHO.[urelation] OR SHO.ucell

и Я получаю эту ошибку:

Сообщение 4145, Уровень 15, Состояние 1, Строка 5
Выражение не-логического типа, указанное в контексте, где ожидается условие, рядом с 'ucell'.

Ошибка должна быть в этой части:

LEFT JOIN [toolDB].[dbo].[esn_umts_intra_sho] SHO ON ESN_M_UMTS.n_cell_name = SHO.[urelation] OR SHO.ucell

У кого-нибудь есть идеи, как решить эту проблему?

1 Ответ

3 голосов
/ 13 февраля 2020

Это недопустимо T- SQL (или, по крайней мере, не будет делать то, что вы хотите):

ON ESN_M_UMTS.n_cell_name = SHO.[urelation] OR SHO.ucell

Это рассматривает OR SHO.ucell как отдельное условие, поэтому база данных пытается оценить это в логическом контексте, который здесь не работает.

Вы можете использовать IN вместо:

ON ESN_M_UMTS.n_cell_name IN (SHO.[urelation], SHO.ucell)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...