对不起家伙,但我想我已经被困在了杂草丛中。有没有办法为嵌套SELECT语句中的每个值为IN函数中的值执行FOR或WHILE LOOP? 我需要为每个“DATE RANGE”获得MAX(RESUBMISSION)值。在IN功能。现在,我为IN函数中的所有值得到1 MAX值,这是不正确的。
非常感谢任何帮助/方向。先感谢您。
这是我的ENTIRE WHERE子句:
WHERE r425.SCHYEAR IN('2010-2011', '2011-2012', '2012-2013', '2013-2014',
'2014-2015', '2015-2016')
AND r425.SUBMISSION = 3
AND r425.RESUBMISSION != 5
AND r425.RESUBMISSION = (**SELECT MAX(RESUBMISSION) FROM [Peims_SIS].[dbo].RECORD425 WHERE SCHYEAR IN('2010-2011', '2011-2012', '2012-2013', '2013-2014', '2014-2015', '2015-2016') AND SUBMISSION = 3**)
AND r425.DISACTIONCODE IN ('05', '06')
AND r101.SUBMISSION = 3
AND r101.RESUBMISSION = (**SELECT MAX(RESUBMISSION) FROM [Peims_SIS].[dbo].RECORD101 WHERE SCHYEAR IN('2010-2011', '2011-2012', '2012-2013', '2013-2014', '2014-2015', '2015-2016') AND SUBMISSION = 3**)
AND r020.SUBMISSION = 3
答案 0 :(得分:2)
您不需要循环。您只需要将子查询与外部查询相关联。
以下是第一个例子:
AND r425.RESUBMISSION = (
SELECT MAX(RESUBMISSION)
FROM [Peims_SIS].[dbo].RECORD425 r425b
WHERE r425b.SCHYEAR=r425.SCHYEAR
AND SUBMISSION = 3
)
子查询中WHERE子句的第一行使子查询得到外部查询正在查看的当前MAX(Resubmission)
的{{1}}。
答案 1 :(得分:0)
您需要加入而不是使用where。
请记住,在SQL中你没有循环,你有行。
这样的事情:
options-disabled