簡體   English   中英

SQL如果在臨時表中存在

[英]SQL If Exists in temporary table

我正在查看許多帳單和應收帳款數據。 我們想知道哪些患者仍有余額。 數據包括帳單和現金收款,因此,當患者“還清”其帳戶時,很多金額總計為零。 帳單數據為380萬行。 我創建的臨時表告訴我哪些患者的付款人仍然有余額。 我想在380萬行數據上創建一列,告訴我臨時表上是否存在患者和付款人,“是”或“否”-這將告訴我數據行是否仍然與現金收集目的相關,或者由於已經收集而可以忽略不計。

運行以下命令時遇到以下錯誤:

信息156,第15層,州1,第79行
關鍵字“ IF”附近的語法不正確。

Msg 102,第15級,狀態1,第80行
','附近的語法不正確。

錯誤從底部大約12行的“ IF Exists”行開始。 如果難以理解,我謹此致歉; 這是我第一次問問題,我不是編寫查詢的經驗最豐富的人,但是過去兩年來我經常訪問此網站,直到現在我一直在尋找我需要的東西。 我可能會煩惱,但要感謝您的事先幫助。

請讓我知道您可能有什么問題。

--TempTable
SELECT
    VIEW_AR_AGING.FACILITYID,
    client.LastName AS 'Last Name',
    client.firstname AS 'First Name',
    client.PatientIDNumber,
    VIEW_AR_AGING.patientid,
    VIEW_AR_AGING.payerid,
    payer.payercode, payer.payercode2,
    payer.PayerName as 'Payer',
    FORMAT (SUM(VIEW_AR_AGING.amount), 'N', 'en-us') AS 'Amount',
    CONCAT(client.LastName, '-', VIEW_AR_AGING.patientid, '-', VIEW_AR_AGING.payerid) AS 'Unique_Patient_Payer'
INTO 
    #TempSummary
FROM 
    view_ods_ar_transaction_detail VIEW_AR_AGING 
LEFT JOIN 
    dbo.view_ods_facility_patient client ON VIEW_AR_AGING.patientid = client.PatientID AND (client.PatientDeleted = 'N')  
LEFT JOIN 
    view_ods_payer payer ON VIEW_AR_AGING.payerid = payer.payerid 
LEFT JOIN 
    ar_lib_accounts a ON VIEW_AR_AGING.DollarsAccountID = a.account_id
WHERE 
    VIEW_AR_AGING.transactionid IS NOT NULL  
    AND VIEW_AR_AGING.transactiondate  <=  eomonth(GETDATE())
    AND VIEW_AR_AGING.amount IS NOT NULL  AND VIEW_AR_AGING.amount  <>  0 
    AND VIEW_AR_AGING.patientid  >  0 
    AND (VIEW_AR_AGING.FACILITYID <>9 or VIEW_AR_AGING.FACILITYID <>10  OR VIEW_AR_AGING.FACILITYID = -1) 
GROUP BY
    VIEW_AR_AGING.patientid, VIEW_AR_AGING.FACILITYID,
    client.LastName, client.firstname, client.PatientIDNumber,
    VIEW_AR_AGING.patientid, VIEW_AR_AGING.payerid,
    payer.payercode, payer.payercode2, payer.PayerName
HAVING 
    SUM(VIEW_AR_AGING.amount) <> 0
--End TempTable

SELECT 
    VIEW_AR_AGING.FACILITYID, 
    client.LastName AS 'Last Name',
    client.firstname AS 'First Name',
    CONVERT(VARCHAR(10), client.OriginalAdmissionDate, 110) AS 'Original Admission Date',
    CONVERT(VARCHAR(10), client.RecentAdmissionDate, 110) AS 'Recent Admission Date',
    CONVERT(VARCHAR(10), client.DischargeDate, 110) AS 'Discharge Date',
    CONVERT(VARCHAR(10), client.DeceasedDate, 110) AS 'Deceased Date',
    client.PatientIDNumber,
    VIEW_AR_AGING.patientid, VIEW_AR_AGING.payerid,
    payer.payercode, payer.payercode2, payer.PayerName as 'Payer',
    VIEW_AR_AGING.transactiontype, VIEW_AR_AGING.DollarsAccountID,
    a.description Account_Desc, a.consolidation_account Account_GL, 
    CONVERT(VARCHAR(10), VIEW_AR_AGING.transactiondate, 110) AS 'Transaction Date',
    CONVERT(VARCHAR(10), VIEW_AR_AGING.effectivedate, 110) AS 'Effective Date', 
    VIEW_AR_AGING.amount AS 'Amount', 
    CONCAT(client.LastName, '-', VIEW_AR_AGING.patientid, '-', VIEW_AR_AGING.payerid) AS 'Unique_Patient_Payer', 
    IF EXISTS (SELECT * FROM #TempSummary b 
               WHERE b.CONCAT(client.LastName, '-', VIEW_AR_AGING.patientid, '-', VIEW_AR_AGING.payerid) =  CONCAT(client.LastName, '-', VIEW_AR_AGING.patientid, '-', VIEW_AR_AGING.payerid)), 'yes', 'no') AS Has_Balance
FROM 
    view_ods_ar_transaction_detail VIEW_AR_AGING 
LEFT JOIN 
    dbo.view_ods_facility_patient client ON VIEW_AR_AGING.patientid = client.PatientID AND (client.PatientDeleted = 'N')  
LEFT JOIN 
    view_ods_payer payer ON VIEW_AR_AGING.payerid = payer.payerid 
LEFT JOIN 
    ar_lib_accounts a ON VIEW_AR_AGING.DollarsAccountID = a.account_id
WHERE 
    VIEW_AR_AGING.transactionid IS NOT NULL  
    AND VIEW_AR_AGING.transactiondate  <=  eomonth(GETDATE())
    AND VIEW_AR_AGING.amount IS NOT NULL  AND VIEW_AR_AGING.amount  <>  0 
    AND VIEW_AR_AGING.patientid  >  0 
    AND (VIEW_AR_AGING.FACILITYID <>9 or VIEW_AR_AGING.FACILITYID <>10  OR VIEW_AR_AGING.FACILITYID = -1) 
    AND VIEW_AR_AGING.transactiondate > '2017-07-01'

查詢中不能包含IF改用CASE

, CASE WHEN EXISTS (SELECT *
                    FROM   #TempSummary b 
                    WHERE  b.concat(client.LastName,             
                                 '-',VIEW_AR_AGING.patientid,'-',VIEW_AR_AGING.payerid) 
                          =  concat(client.LastName, 
                                 '-',VIEW_AR_AGING.patientid,'-',VIEW_AR_AGING.payerid))
THEN 'yes'
ELSE 'no' END  AS Has_Balance

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM