如何从子查询中的外部查询中引用TSQL计算字段

问题描述 投票:0回答:1

不确定如何在MS T-SQL中编写以下代码:

Select RunDate, 
       Lead(RunDate) Over(Order By Rundate) NextRunDate,
       (Select Count(*) 
        From   DetailTable
        Where  DetailTable.EventDate <= NextRunDate) as Cnt
From   RunDates

在子查询中使用“ NextRunDate”会给出“无效的列名”错误,这很有意义。但是如何引用该外部变量?谢谢!

tsql syntax correlated-subquery
1个回答
0
投票

您可以嵌套查询,而在另一个查询中保留子查询,然后再包含子查询。

SELECT x.rundate,
       (SELECT count(*)
               FROM detailtable d
               WHERE d.eventdate <= x.nextrundate) cnt
       FROM (SELECT r.rundate, 
                    lead(r.rundate) OVER (ORDER BY r.rundate) nextrundate
                    FROM rundates r) x;
© www.soinside.com 2019 - 2024. All rights reserved.