繁体   English   中英

带有 group by 的 select 语句中的相关子查询

[英]Correlated subquery in a select statement with group by

我有一个带有 group by 的选择查询,选择列表中有一个相关的子查询。 此查询返回正确的结果。 我的问题是这个查询是如何工作的。 子查询不应该是 group by list 的一部分吗? 有人可以解释一下它背后的机制吗? 谢谢!

Select a.column1
      ,Max(a.column2)                         'MaxValue'
      ,Min(a.column2)                         'MinValue'
      ,(Select top 1 Column c
          From table A  a_s
         Where a_s.column1 = a.column1
           and a_s.ver <> 0
        )                                     'ColumnCValue'
  From tableA a
 Group by a.column1

这不是必要的。 这是相关的子查询:

(Select top 1 Column c
 From table A  a_s
 Where a_s.column1 = a.column1 and
-------^
       a_s.ver <> 0
)

关键是相关条款使用a.column1 该列是聚合列。 实际上,相关子查询在聚合之后运行,因此它只能使用聚合后可用的列和表达式。 你正在这样做,所以你的表情很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM