0
我有一些存储过程需要针对数据库的讨厌野兽编写。我需要遍历一个表(应用程序),并使用应用程序表中的application_id从其他表中提取值(其中一些是aggerate/averages/etc值)。T-SQL循环创建记录集
到目前为止,我有:
declare @id INT
declare app cursor for
SELECT application_id from application
OPEN app
FETCH NEXT FROM app
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT a.NAME_LAST, a.NAME_FIRST, ca.status, (SELECT AVG(score) FROM reviews WHERE application_id = @id), (SELECT count(*) FROM reviews WHERE application_id = @id) FROM application a, committee_applications ca WHERE a.application_id = ca.application_id AND a.application_id = @id
FETCH NEXT FROM app INTO @id
END
CLOSE app
DEALLOCATE app
这是给我我想要的结果,但我敢肯定有这样做的更清洁的方式,而我似乎无法使心理跳今天要正确地做到这一点。有人能指出一个更好的方法来做这件事,因为这对我来说似乎很难看。
另外,它似乎应该将这些值存储到临时表中,然后返回完整的结果,而不是逐个运行SELECT语句。
任何建议将不胜感激。
谢谢。
谢谢,那岩石,我正在寻找。我知道有一个更干净的方式来做到这一点。现在我只需要将这个疯狂的SQL的其余部分加入其中。 – 2009-06-24 22:37:23