Query
我需要幫助來解決這個查詢!
我需要弄清楚這個查詢有什麼問題。執行查詢時出現此錯誤:“從字元串轉換為唯一標識符時,消息 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 特定引用的方括號。
如果不了解您的表格結構,我們將無法幫助您。
可能有問題的是:
- 您正在加入兩種不同類型的欄位,例如。也許 patient_encounter.enc_id 是 GUID,而 patient_documents.enc_id 是 varchar,反之亦然,或者 template_file 是 GUID,而 document_name 是 varchar,等等。
或者
- 如果來自fax_result 的類型與來自NGPlugin_Auto_Fax_Hist_ 的類型不匹配,則問題出在UNION