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)は、私のテーブル値関数です。
私にこれを手伝ってください。
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)は、私のテーブル値関数です。
私にこれを手伝ってください。
はい。テーブル値関数は、通常のテーブルと同様に使用できます。
あなたのクエリは、TVFにもかかわらず、有効なSQLではありません。さらに参考のために
あなたは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
あなたはそれをどのようにして注文するのですか? TVFが元のクエリとどのように関連しているかはわかりません。ただし、2つを結合することはできます(cs_postsには、TVFに関連するID列があると仮定します)。次に、TVF id列で順序付けします。
選択結果を文字列に連結しようとしていますか?それはどうやって動くのだろう? – Oded
コードを試しましたか?はいの場合は、あなたは "エラー"を取得しています。 –
select *が複数の結果を返す場合、動作しません。 –