按顺序使用表值函数

时间:2012-03-02 10:01:27

标签: sql-server

我可以在我的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)是我的表值函数。

请帮我解决这个问题。

3 个答案:

答案 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)

是。您可以将表值函数用作普通表。

尽管有TVF,但您的查询无效SQL。

供进一步参考:
http://msdn.microsoft.com/en-us/library/ms191165.aspx

答案 2 :(得分:0)

你不能这样做 - 它如何知道要点什么?它不知道TVF如何与原始查询相关。你可以加入这两个(因为我假设cs_posts有一个与TVF相关的id列),然后按TVF id列排序。