主查询选择的子查询条件

时间:2016-04-05 08:46:00

标签: sql-server sql-server-2008 subquery

我想做一些子查询选择,其条件取自主查询选择。

这是我的疑问:

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
    ;

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

  

[Err] 42S22 - [SQL Server]列名称'B'无效。

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

3 个答案:

答案 0 :(得分:4)

试试这个:UserManager.AddToRoleAsync

MONTH(MR.datetime_end) = MONTH(M.datetime_end)

答案 1 :(得分:0)

您的查询是否与此相同?

FileInputStreams

还尝试使用ANSI样式的连接

答案 2 :(得分:0)

根据SELECT语句的逻辑处理顺序,您不能在ORDER By子句中使用B(即别名),而是必须使用您在SELECT子句中编写的内容,即MONTH(datetime_end)或序列号(以数字形式)在您的情况下为1的列。 在镜头中,您可以选择以下任何一个来替换ORDER BY子句中的B:

  1. ORDER BY B = ORDER BY MONTH(datetime_end)
  2. ORDER BY B = ORDER BY 1