TSQL:如果在一个With语句中的语句
问题描述:
我的问题是我想合并两个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语句中?
答
没有,,,这会是这样的
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:它不添加任何可读性
答
你可以使用union
其中顶侧对应于if
上半年:
select ...
where @SortType is null
union all
select ...
where @SortType not null null
的if
语句不允许查询中,只有控制查询周围的流程。因此with
内的if
是不允许的。
如何在没有CTE的情况下进行分页? – 2010-12-08 11:19:33