Query

我需要幫助來解決這個查詢!

  • April 22, 2022

我需要弄清楚這個查詢有什麼問題。執行查詢時出現此錯誤:“從字元串轉換為唯一標識符時,消息 8169,級別 16,狀態 2,第 1 行轉換失敗。”

SELECT p.first_name, 
   p.last_name, 
   p.date_of_birth, 
   REPLACE(LTRIM(REPLACE(PT.med_rec_nbr,0,' ')),' ',0), 
   PE.enc_timestamp, 
   PD.document_desc,PD.template_file, 
   PE.rendering_provider_id, 
   PM.description, 
   FX.fax_status, 
   FX.to_fax, 
   FX.to_name, 
   isnull(R.efRule,0) 

FROM patient_encounter PE 
INNER JOIN patient_documents PD 
   ON PE.enc_id=PD.enc_id
INNER JOIN person P 
   ON PE.person_id=p.person_id
INNER JOIN patient PT 
   ON PE.person_id=PT.person_id 
   AND PE.practice_id=PT.practice_id
INNER JOIN provider_mstr PM 
   ON PE.rendering_provider_id=PM.provider_id 
LEFT JOIN (
   SELECT to_name, to_fax, doc_id,fax_status from fax_result
   UNION ALL
   SELECT fax_to_name, 'TASKED', document_id, 'SENT' 
   FROM NGPlugin_Auto_Fax_Hist_ 
   WHERE job_type = 'T'
) FX 
   ON PD.document_id=FX.doc_id
LEFT JOIN (
   SELECT FAX.provider_id,FA.document_name,
       '1' as 'efRule' 
   FROM NGPlugin_Auto_Fax_Assign_ FA 
   INNER JOIN NGPlugin_AF_Assign_Xref_ FAX 
       ON FA.rule_id=FAX.rule_id
) R 
   ON PE.rendering_provider_id=R.provider_id 
   AND PD.template_file=R.document_name

希望不是你唯一的錯誤,而是

'1' as 'efRule’

導致您遇到的錯誤。

'efRule’是字元串文字,而您在此處需要列標識符。如果大小寫不重要,只需使用

'1' as efRule

如果大小寫很重要,您需要對標識符使用適當的引號,該引號可以是雙引號(SQL 標準),也可以是用於 SQL Server 特定引用的方括號。

如果不了解您的表格結構,我們將無法幫助您。

可能有問題的是:

  1. 您正在加入兩種不同類型的欄位,例如。也許 patient_encounter.enc_id 是 GUID,而 patient_documents.enc_id 是 varchar,反之亦然,或者 template_file 是 GUID,而 document_name 是 varchar,等等。

或者

  1. 如果來自fax_result 的類型與來自NGPlugin_Auto_Fax_Hist_ 的類型不匹配,則問題出在UNION

引用自:https://dba.stackexchange.com/questions/311204