У меня есть несколько хранимых процедур, которые мне нужно написать против неприятного зверя базы данных. Мне нужно пройти через таблицу (приложение) и вывести значения из других таблиц (некоторые из них - значения aggerate/average/etc), используя application_id из таблицы приложений.Цикл 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
Что дает мне результаты, я хочу, но я уверен, что есть более чистый способ сделать это, и я не могу сделать психическое прыжок сегодня сделать это правильно. Может ли кто-то указать на лучший способ сделать это, поскольку это кажется мне действительно уродливым.
Кроме того, мне кажется, что я должен хранить эти значения в таблице temp, а затем возвращать полные результаты вместо того, чтобы запускать инструкцию SELECT один за другим.
Любые предложения были бы весьма полезными.
Спасибо.
Спасибо, что камни и то, что я искал. Я знал, что есть гораздо более чистый способ сделать это. Теперь мне просто нужно забить остальную часть этого сумасшедшего SQL. –