我可以在我的select query ????
的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 :(得分: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
答案 1 :(得分:0)
答案 2 :(得分:0)
你不能这样做 - 它如何知道要点什么?它不知道TVF如何与原始查询相关。你可以加入这两个(因为我假设cs_posts有一个与TVF相关的id列),然后按TVF id列排序。