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文を1つずつ実行する代わりに完全な結果を戻す必要があるようです。
ご意見をいただければ幸いです。
ありがとうございました。
ありがとう、その岩は私が探していたものです。私はそれを行うためのきれいな方法があることを知っていた。今私はちょうどそれに狂ったSQLの残りの部分をハンマーする必要があります。 –