主查询中的子查询条件选择

Rya*_*ief 3 sql-server subquery sql-server-2008

我想做一些子查询选择,其条件是从主查询选择中获取的。

这是我的查询:

SELECT 
    DISTINCT MONTH(datetime_end) as B,
    (
        SELECT 
                SUM(DATEDIFF(DAY, datetime_start, datetime_end))
            FROM 
                    [simrke].[trx_medical_ruang] MR,
                    [simrke].[trx_ruang] R
            WHERE
                MR.ruang_cd = R.ruang_cd AND 
                R.ruang_nm like 'BAKUNG%'   AND
                MONTH(datetime_end) = B
    )
FROM 
        [simrke].[trx_medical_ruang] M
ORDER BY B
    ;
Run Code Online (Sandbox Code Playgroud)

其中子查询选择条件MONTH(datetime_end) = B来自先前的选择,但我收到此错误消息:

[错误] 42S22 - [SQL Server] 列名“B”无效。

指向第一个 B 选择的正确方法是什么?

Abd*_*eed 5

尝试这个 :MONTH(MR.datetime_end) = MONTH(M.datetime_end)

SELECT 
    DISTINCT MONTH(datetime_end) as B,
    (
        SELECT 
                SUM(DATEDIFF(DAY, datetime_start, datetime_end))
            FROM 
                    [simrke].[trx_medical_ruang] MR,
                    [simrke].[trx_ruang] R
            WHERE
                MR.ruang_cd = R.ruang_cd AND 
                R.ruang_nm like 'BAKUNG%'   AND
                MONTH(MR.datetime_end) = MONTH(M.datetime_end)
    )
FROM 
        [simrke].[trx_medical_ruang] M
ORDER BY B
Run Code Online (Sandbox Code Playgroud)