执行查询时遇到以下错误消息。一位成员建议我检查子查询中的别名。我做了,他们似乎排队。
你们能提供一些见解吗?谢谢。
在预期条件的上下文中指定的非布尔类型的表达式,靠近')'。
Select CLINIC_ID,SUMMARY_CATGRY,ENTRY_TYPE,
SUM(case when EntryMonth = 1 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Jan12],
SUM(case when EntryMonth = 2 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Feb12],
SUM(case when EntryMonth = 3 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Mar12],
SUM(case when EntryMonth = 4 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Apr12],
SUM(case when EntryMonth = 5 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [May12],
SUM(case when EntryMonth = 6 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Jun12],
SUM(case when EntryMonth = 7 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Jul12],
SUM(case when EntryMonth = 8 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Aug12],
SUM(case when EntryMonth = 9 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Sep12],
SUM(case when EntryMonth = 10 and EntryYear = 2012 then [sumofentry_amount] else 0 end)[Oct12],
SUM(case when EntryMonth = 11 and EntryYear = 2012 then [sumofentry_amount] else 0 end)[Nov12],
SUM(case when EntryMonth = 12 and EntryYear = 2012 then [sumofentry_amount] else 0 end)[Dec12],
SUM(case when EntryYear = 2012 then [sumofentry_amount] else 0 end) [2012YTD],
SUM(case when EntryYear = 2011 then [sumofentry_amount] else 0 end) [2011YTD]
From
(
SELECT [Non_Recurring_Clinic_Step1].CLINIC_ID,
dbo_HR_FINAN_CLASS.SUMMARY_CATGRY,
[TABLE_LAYOUT].ENTRY_TYPE,
datepart(month,[entry_date]) EntryMonth,
datepart(year,[entry_date]) EntryYear,
[sumofentry_amount]
FROM [TABLE_LAYOUT]
Inner Join
(
SELECT [GROUPING_OF_CLINIC_ID].CLINIC_ID, OUTPAT_ACCT_REC.CHARGE_CLASS,[GROUPING_OF_CLINIC_ID].PATIENT_NUMBER, [GROUPING_OF_CLINIC_ID].REGISTRATION_CD, OUTPAT_REGISTER.PRIMARY_FINAN, Replace(CONVERT(VARCHAR(10),OUTPAT_ACCT_REC.ENTRY_DATE,101), '/', '') AS ENTRY_DATE, SUM(ENTRY_AMOUNT) AS ENTRY_AMOUNT
FROM
OUTPAT_REGISTER
Left JOIN
OUTPAT_BILL_REF
ON(OUTPAT_REGISTER.PATIENT_NUMBER = OUTPAT_BILL_REF.PATIENT_NUMBER)
AND(OUTPAT_REGISTER.REGISTRATION_CD = OUTPAT_BILL_REF.REGISTRATION_CD)
Left JOIN
OUTPAT_ACCT_REC
ON(OUTPAT_BILL_REF.PATIENT_NUMBER = OUTPAT_ACCT_REC.PATIENT_NUMBER)
AND(OUTPAT_BILL_REF.BILL_REFERENCE = OUTPAT_ACCT_REC.REFERENCE_NUM)
Left JOIN
(
SELECT CLINIC_ID, PATIENT_NUMBER, REGISTRATION_CD
FROM OP_VISIT_HISTRY
GROUP BY CLINIC_ID, PATIENT_NUMBER, REGISTRATION_CD
--ORDER BY CLINIC_ID
)AS [GROUPING_OF_CLINIC_ID]
ON(OUTPAT_REGISTER.PATIENT_NUMBER = [GROUPING_OF_CLINIC_ID].PATIENT_NUMBER)
AND(OUTPAT_REGISTER.REGISTRATION_CD =[GROUPING_OF_CLINIC_ID].REGISTRATION_CD)
GROUP BY [GROUPING_OF_CLINIC_ID].CLINIC_ID,OUTPAT_ACCT_REC.CHARGE_CLASS,[GROUPING_OF_CLINIC_ID].PATIENT_NUMBER,[GROUPING_OF_CLINIC_ID].REGISTRATION_CD,
OUTPAT_ACCT_REC.ENTRY_DATE,OUTPAT_REGISTER.PRIMARY_FINAN
HAVING OUTPAT_ACCT_REC.ENTRY_DATE >'12/31/2010'
)AS [Non_Recurring_Clinic_Step1]
On([TABLE_LAYOUT].ENTRY_CLASS = [Non_Recurring_Clinic_Step1].CHARGE_CLASS)
Inner Join
OUTPAT_REGISTER
On([Non_Recurring_Clinic_Step1].PATIENT_NUMBER = OUTPAT_REGISTER.PATIENT_NUMBER)
And([Non_Recurring_Clinic_Step1].REGISTRATION_CD = OUTPAT_REGISTER.REGISTRATION_CD)
Inner Join
OUTPAT_AREA_CDS
On(OUTPAT_REGISTER.REGISTER_AREA = OUTPAT_AREA_CDS.REGISTER_AREA)
Inner Join
HR_FINAN_CLASS.FINAN_CLASS_CD
On(OUTPAT_REGISTER.PRIMARY_FINAN = HR_FINAN_CLASS.FINAN_CLASS_CD)
Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE)<>'RE'
and datepart(year,[entry_date]) in (2011, 2012)
) src
group by CLINIC_ID, SUMMARY_CATGRY, ENTRY_TYPE
答案 0 :(得分:5)
看起来你在这一行有一个额外的括号:
Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE)<>'RE' -- there is a closing but no opening
^ -- this is extra
我通过格式化代码来找到匹配的括号。
所以你的完整查询将是:
Select CLINIC_ID,
SUMMARY_CATGRY,
ENTRY_TYPE,
SUM(case when EntryMonth = 1 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Jan12],
SUM(case when EntryMonth = 2 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Feb12],
SUM(case when EntryMonth = 3 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Mar12],
SUM(case when EntryMonth = 4 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Apr12],
SUM(case when EntryMonth = 5 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [May12],
SUM(case when EntryMonth = 6 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Jun12],
SUM(case when EntryMonth = 7 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Jul12],
SUM(case when EntryMonth = 8 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Aug12],
SUM(case when EntryMonth = 9 and EntryYear = 2012 then [sumofentry_amount] else 0 end) [Sep12],
SUM(case when EntryMonth = 10 and EntryYear = 2012 then [sumofentry_amount] else 0 end)[Oct12],
SUM(case when EntryMonth = 11 and EntryYear = 2012 then [sumofentry_amount] else 0 end)[Nov12],
SUM(case when EntryMonth = 12 and EntryYear = 2012 then [sumofentry_amount] else 0 end)[Dec12],
SUM(case when EntryYear = 2012 then [sumofentry_amount] else 0 end) [2012YTD],
SUM(case when EntryYear = 2011 then [sumofentry_amount] else 0 end) [2011YTD]
From
(
SELECT [Non_Recurring_Clinic_Step1].CLINIC_ID,
dbo_HR_FINAN_CLASS.SUMMARY_CATGRY,
[TABLE_LAYOUT].ENTRY_TYPE,
datepart(month,[entry_date]) EntryMonth,
datepart(year,[entry_date]) EntryYear,
ENTRY_AMOUNT as [sumofentry_amount]
FROM [TABLE_LAYOUT]
Inner Join
(
SELECT [GROUPING_OF_CLINIC_ID].CLINIC_ID,
OUTPAT_ACCT_REC.CHARGE_CLASS,
[GROUPING_OF_CLINIC_ID].PATIENT_NUMBER,
[GROUPING_OF_CLINIC_ID].REGISTRATION_CD,
OUTPAT_REGISTER.PRIMARY_FINAN,
Replace(CONVERT(VARCHAR(10),OUTPAT_ACCT_REC.ENTRY_DATE,101), '/', '') AS ENTRY_DATE,
SUM(ENTRY_AMOUNT) AS ENTRY_AMOUNT
FROM OUTPAT_REGISTER
Left JOIN OUTPAT_BILL_REF
ON OUTPAT_REGISTER.PATIENT_NUMBER = OUTPAT_BILL_REF.PATIENT_NUMBER
AND OUTPAT_REGISTER.REGISTRATION_CD = OUTPAT_BILL_REF.REGISTRATION_CD
Left JOIN OUTPAT_ACCT_REC
ON OUTPAT_BILL_REF.PATIENT_NUMBER = OUTPAT_ACCT_REC.PATIENT_NUMBER
AND OUTPAT_BILL_REF.BILL_REFERENCE = OUTPAT_ACCT_REC.REFERENCE_NUM
Left JOIN
(
SELECT CLINIC_ID, PATIENT_NUMBER, REGISTRATION_CD
FROM OP_VISIT_HISTRY
GROUP BY CLINIC_ID, PATIENT_NUMBER, REGISTRATION_CD
)AS [GROUPING_OF_CLINIC_ID]
ON OUTPAT_REGISTER.PATIENT_NUMBER = [GROUPING_OF_CLINIC_ID].PATIENT_NUMBER
AND OUTPAT_REGISTER.REGISTRATION_CD =[GROUPING_OF_CLINIC_ID].REGISTRATION_CD
WHERE OUTPAT_ACCT_REC.ENTRY_DATE >'12/31/2010'
GROUP BY [GROUPING_OF_CLINIC_ID].CLINIC_ID,
OUTPAT_ACCT_REC.CHARGE_CLASS,
[GROUPING_OF_CLINIC_ID].PATIENT_NUMBER,
[GROUPING_OF_CLINIC_ID].REGISTRATION_CD,
OUTPAT_ACCT_REC.ENTRY_DATE,
OUTPAT_REGISTER.PRIMARY_FINAN
)AS [Non_Recurring_Clinic_Step1]
On [TABLE_LAYOUT].ENTRY_CLASS = [Non_Recurring_Clinic_Step1].CHARGE_CLASS
Inner Join OUTPAT_REGISTER
On [Non_Recurring_Clinic_Step1].PATIENT_NUMBER = OUTPAT_REGISTER.PATIENT_NUMBER
And [Non_Recurring_Clinic_Step1].REGISTRATION_CD = OUTPAT_REGISTER.REGISTRATION_CD
Inner Join OUTPAT_AREA_CDS
On OUTPAT_REGISTER.REGISTER_AREA = OUTPAT_AREA_CDS.REGISTER_AREA
Inner Join HR_FINAN_CLASS.FINAN_CLASS_CD
On OUTPAT_REGISTER.PRIMARY_FINAN = HR_FINAN_CLASS.FINAN_CLASS_CD
Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE<>'RE'
and datepart(year,[entry_date]) in (2011, 2012)
) src
group by CLINIC_ID, SUMMARY_CATGRY, ENTRY_TYPE
答案 1 :(得分:4)
我看到的一个问题是以下部分:
Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE)<>'RE'
and datepart(year,[entry_date]) in (2011, 2012)
) src
看起来你在dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE)<>'RE'
有一个额外的,无与伦比的帮派......相反,这应该是:
Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE<>'RE'
and datepart(year,[entry_date]) in (2011, 2012)
) src