Я изучаю SQL в курсе, и я работаю с SQL на MS SQL Server (так, T-SQL).Я пытаюсь перефакторинг подзапроса, используя общее табличное выражение (CTE).Вот рабочая версия подзапроса:
SELECT PAT_ENC_CSN_ID 'CSN',
ADMISSION_PROV_ID 'Provider ID'
FROM PAT_ENC_HSP
WHERE ADMISSION_PROV_ID IN (
SELECT DISTINCT PROV_ID
FROM CL_SER_HIM_LST_VST
WHERE HIM_STATUS_C <> 1001
)
Я думал, что CTE был (почти) заменой, поэтому я попытался сделать следующее:
WITH Not_Good AS ( SELECT DISTINCT PROV_ID
FROM CL_SER_HIM_LST_VST
WHERE HIM_STATUS_C <> 1001
)
SELECT PAT_ENC_CSN_ID 'CSN',
ADMISSION_PROV_ID 'Provider ID'
FROM PAT_ENC_HSP
WHERE PAT_ENC_HSP.ADMISSION_PROV_ID IN (Not_Good.PROV_ID)
Но яполучаю синтаксическую ошибку в последнем WHERE
предложении: The multi-part identifier "Not_Good.PROV_ID" could not be bound.
В чем здесь проблема?
У меня нет JOIN
с отсутствующим ON
условием, и при этом я не вижу отсутствующего псевдонима.
Заранее спасибо за ваше время!