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



我有一个group by的select查询,select列表中有一个相关的子查询。此查询返回正确的结果。我的问题是这个查询是如何工作的。子查询不应该是分组列表的一部分吗?有人能解释一下背后的机制吗?非常感谢。

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
)

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

相关内容

  • 没有找到相关文章

最新更新