2010-12-08 70 views
0

我的问题是我想合并两个SP在一个。生成sp的骨架是:TSQL:如果在一个With语句中的语句

with Paging(RowNo, ID, Name, Description, LengthSeconds, Rating, Url, ThumbnailFileName, AddedAt) AS 
    (
    (if(@SortType is null) 
     begin 
     ... select ... 
     end 
     else 
     begin 
     ... select... 
     end 
    ) 

    select * from Paging ... 

我可以这样做如果在with语句中?

回答

8

没有,,,这会是这样的

with Paging(RowNo, ID, Name, Description, LengthSeconds, Rating, Url, ThumbnailFileName, AddedAt) AS 
(
    select ... 

    WHERE @SortType is not null 
    UNION ALL 
    select ... 

    WHERE @SortType is null 
)... 

如果查询的是,虽然简单,但是,那么你就不会需要一个CTE:它不添加任何可读性

+0

如何在没有CTE的情况下进行分页? – 2010-12-08 11:19:33

0

你可以使用union其中顶侧对应于if上半年:

select ... 
where @SortType is null 
union all 
select ... 
where @SortType not null null 

if语句不允许查询中,只有控制查询周围的流程。因此with内的if是不允许的。