在 '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)
我正在编写一个存储过程,但是当我尝试执行它时弹出此错误:
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)