2012-03-02 12 views
0

my selectクエリのby節でテーブル値関数を使用できますか?このようorder by節のテーブル値関数の使用

declare @ID int 
set @ID=9011 
Exec ('select top 10 * from cs_posts order by ' + (select * from dbo.gettopposter(@ID)) desc) 

GetTopPoster(ID)は、私のテーブル値関数です。

私にこれを手伝ってください。

+0

選択結果を文字列に連結しようとしていますか?それはどうやって動くのだろう? – Oded

+0

コードを試しましたか?はいの場合は、あなたは "エラー"を取得しています。 –

+0

select *が複数の結果を返す場合、動作しません。 –

答えて

2

あなたはjoinとテーブル値関数を使用することができます。これにより、並べ替える列の組み合わせを自由に選択することができます。

select top 10 * 
from cs_posts p 
join dbo.gettopposter(@ID) as gtp 
on  p.poster_id = gtp.poster_id 
order by 
     gtp.col1 
,  gtp.col2 
0

あなたはそれをどのようにして注文するのですか? TVFが元のクエリとどのように関連しているかはわかりません。ただし、2つを結合することはできます(cs_postsには、TVFに関連するID列があると仮定します)。次に、TVF id列で順序付けします。

関連する問題