在 'Epi' 附近预期条件的上下文中指定的非布尔类型的表达式

An expression of non-boolean type specified in a context where a condition is expected, near 'Epi'

我正在编写一个存储过程,但是当我尝试执行它时弹出此错误:

Msg 4145, Level 15, State 1, Line 38
An expression of non-boolean type specified in a context where a condition is expected, near 'Epi'.

我已经检查了很多次代码,但仍然无法找出问题所在。我需要一双新鲜的眼睛,拜托!

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Rpt_Provider_GP_Monthly_Dump]
    @DateOption VARCHAR (100) = 'Service Date', -- 'Service Date' or 'Approval Date'
    @FromDate   DATETIME,
    @ToDate     DATETIME,
    @Provider   VARCHAR (100) = 'ALL'
AS
BEGIN
    SET NOCOUNT ON;

    SET @FromDate   = CONVERT(DATETIME, @FromDate , 103)
    SET @ToDate     = CONVERT(DATETIME, @ToDate , 103)

    /* Variable Declaration */
    DECLARE @SQLQuery AS NVARCHAR(2000)

    SET @SQLQuery = '
    SELECT CLM.ClaimCode, CLM.ClaimNumber, CLM.VisitAdmissionDate,
    CASE
        WHEN (MBR.SubsidiaryCode IS NULL OR MBR.SubsidiaryCode = '''') THEN MBR.ClientCode
        ELSE MBR.SubsidiaryCode
    END AS CompanyCode,
    CASE
        WHEN (MBR.SubsidiaryName IS NULL OR MBR.SubsidiaryName = '''') THEN MBR.CompanyName
        ELSE MBR.SubsidiaryName
    END AS CompanyName,
    PROV.ProviderCode, PROV.ProviderName, MBR.MemberCode, MBR.MemberName,
    CLM.OnInvoiceGrandTotal, SUM(CLM.PayByInsGrandTotal + CLM.PayExgratiaGrandTotal) AS PaidAmt, CLM.ApprovedDate,
    CASE
        WHEN CLM.IsOvrdCoInsCoPayAmt IS NULL THEN ISNULL(CLM.CoInsCoPayAmt,0)
        ELSE ISNULL(CLM.OvrdCoInsCoPayAmt,0)
    END AS CopayCoIns,
    SUM(CLM.CoverageByClientGrandTotal + CLM.CoverageByMemberGrandTotal + CLM.ExceedLimitGrandTotal + 
    CLM.DuductibleAmtGrandTotal + CLM.MemberCoInsGrandTotal + CLM.CoverageByProviderGrandTotal) AS RejectedAmt,
    CLM.DiagnosisCode, CLM.DiagnosisDescription,
    STUFF( (SELECT '', '' + A.Description FROM CLM_ClaimBenefit A
            WHERE A.BenefitType = ''DRG'' AND A.ClaimCode = CLM.ClaimCode ORDER BY A.Description
            FOR XML PATH(''''), TYPE)
    .value(''.'', ''VARCHAR(MAX)''), 1, 2, '''') AS Drug,
    ISNULL(STUFF( (SELECT '', '' + CAST(A.Qty AS VARCHAR(10)) FROM CLM_DrugFormulary A
            WHERE A.ClaimCode = CLM.ClaimCode ORDER BY A.DrugName
            FOR XML PATH(''''), TYPE)
    .value(''.'', ''VARCHAR(MAX)''), 1, 2, ''''), '''') AS Qty,
    STUFF( (SELECT '', '' + CAST((A.PayByIns + A.PayExgratia) AS VARCHAR(10)) FROM CLM_ClaimBenefit A 
            WHERE A.BenefitType = ''DRG'' AND A.ClaimCode = CLM.ClaimCode ORDER BY A.Description
            FOR XML PATH(''''), TYPE)
    .value(''.'', ''VARCHAR(MAX)''), 1, 2, '''') AS Amount,
    CLM.ClaimStatus, ISNULL(CLM.ClaimHandlerRemarks, '''') AS ClaimHandlerRemarks, CLM.CreatedBy
    FROM CLM_Claim CLM, CLM_MemberDetail MBR, CLM_ProviderDetail PROV
    WHERE MBR.ClaimCode = CLM.ClaimCode AND PROV.ClaimCode = CLM.ClaimCode
    AND CLM.ClaimClassCode = ''BC000001''
    AND CLM.ClaimStatusCode IN (2, 9, 13)
    AND CLM.ClaimTypeCode = 1
    AND CLM.EpisodeNumber = (SELECT MAX(EpisodeNumber) FROM CLM_Claim WHERE ClmNo = CLM.ClmNo)
    '

    IF (@DateOption = 'Approve')
        SET @SQLQuery = @SQLQuery + ' AND CLM.ApprovedDate BETWEEN @FromDate AND @ToDate + 1'
    ELSE    -- Visit Date
        SET @SQLQuery = @SQLQuery + ' AND CLM.VisitAdmissionDate BETWEEN @FromDate AND @ToDate + 1'

    IF (@Provider != 'ALL')
        SET @SQLQuery = @SQLQuery + ' AND PROV.ProviderCode = @Provider'

    SET @SQLQuery = @SQLQuery + ' 
    GROUP BY CLM.ClaimCode, CLM.ClaimNumber, CLM.VisitAdmissionDate, CLM.ApprovedDate,
    MBR.ClientCode, MBR.CompanyName, MBR.SubsidiaryCode, MBR.SubsidiaryName, 
    PROV.ProviderCode, PROV.ProviderName, MBR.MemberCode, MBR.MemberName, 
    CLM.OnInvoiceGrandTotal, CLM.IsOvrdCoInsCoPayAmt, CLM.OvrdCoInsCoPayAmt, CLM.CoInsCoPayAmt,
    CLM.DiagnosisCode, CLM.DiagnosisDescription, CLM.ClaimStatus, CLM.ClaimHandlerRemarks, CLM.CreatedBy
    '

PRINT @SQLQuery
    EXEC sp_executesql @SQLQuery, 
        N'@DateOption VARCHAR (100), @FromDate DATETIME, @ToDate DATETIME, @Provider VARCHAR (100)',
        @DateOption, @FromDate, @ToDate, @Provider
END

已更改

DECLARE @SQLQuery AS NVARCHAR(2000)

DECLARE @SQLQuery AS NVARCHAR(MAX)