Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 子查询错误消息_Sql Server - Fatal编程技术网

Sql server 子查询错误消息

Sql server 子查询错误消息,sql-server,Sql Server,我在执行查询时遇到以下错误消息。一位成员建议我在子查询中检查别名。我做到了,他们似乎在排队 你们能提供一些见解吗?多谢各位 在预期条件的上下文中指定的非布尔类型的表达式 我看到的一个问题在以下部分: Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE)<>'RE' and datepart(year,[entry_date]) in (2011, 2012) ) src 看起来你在dbo\U OUTPAT\U AREA\U CD上有一个额

我在执行查询时遇到以下错误消息。一位成员建议我在子查询中检查别名。我做到了,他们似乎在排队

你们能提供一些见解吗?多谢各位

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


我看到的一个问题在以下部分:

Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE)<>'RE'
        and datepart(year,[entry_date]) in (2011, 2012)
) src
看起来你在dbo\U OUTPAT\U AREA\U CD上有一个额外的、无与伦比的paren。REG\U AREA\U类型是“。。。相反,这应该是:

Where dbo_OUTPAT_AREA_CDS.REG_AREA_TYPE<>'RE'
        and datepart(year,[entry_date]) in (2011, 2012)
) src

这一行似乎有一个额外的括号:

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

哇,你把它弄得很漂亮,而且还很漂亮ugly@AaronBertrand是的,这是丑陋的+1美化…好吧,删除了额外的括号,并得到这个错误消息:消息207,16级,状态1,第23行无效列名“sumofentry_amount”。是的,它确实不好看,但我会努力使我的格式更好。lol.@user2026836查看我的编辑。子查询中有一个名为entry\u amount的列。我将其更改为ENTRY_AMOUNT,作为[sumofentry_AMOUNT],我建议您首先从查询中删除总和。如果这没有帮助,至少你已经消除了一堆东西,你已经给了我们其余的人涉过。然后一次消除一个连接,直到问题消失。当您试图将代码缩减到演示问题的最小示例时,您可能会自己偶然发现答案!这就像调试一样。谢谢你的洞察力。我现在只使用SQL几个月了,您的建议对我以后开发其他查询时开始遇到更多问题非常有用。好的,删除了多余的括号,并收到以下错误消息:Msg 207,级别16,状态1,第23行无效列名“sumofentry_amount”。感谢您的帮助。
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