特定のアカウントに関する詳細を返すテーブル値関数があります。このようなもの。はるかに複雑ですが、あなたはその考えを理解します。それが違いを生むのであれば、それは複数行のTVFです(インラインステートメントではありません)
select * from dbo.TBFDetailsByAccountKey(1234)
-----------------------------------------------
date | amount | detail |
-----------------------------------------------
4/1/2012 | 10.23 | payment stuff |
4/2/2012 | 12.40 | other stuff |
4/2/2012 | 14.23 | second pmt today |
一連の預金に含まれるすべてのアカウントキーの詳細を返すために、一連のUNIONALLステートメントでこの同じTVFを繰り返し呼び出す必要があります。動的SQLに頼らずにこれを行う方法はありますか?
私の現在のアプローチはこれです...しかし、それは動的SQLを使用しており、より良い「非動的」な方法があるはずだと私は考え続けています。
DECLARE @pResult varchar(max)
SELECT @pResult = COALESCE(@pResult + ' UNION ALL ', '') +
'SELECT * FROM dbo.TBFDetailsByAccountKey(' +
Cast(AccountKey AS VarChar(25)) + ')'
FROM Account WHERE DepositKey = @pDepositKey
EXEC(@pResult) /* execute dynamic sql created above */