【发布时间】:2014-05-11 13:21:26
【问题描述】:
我有一个复杂的查询来选择带有“with”的分页记录,我想将最后一个临时表重用于其他用途,例如记录计数:
;with ProductCatIDs
as
(
select
ID, ParentID, Name
from
[tbl_Categories]
where
ID = @CatID
union all
select
m.ID, m.ParentID, m.Name
from
[tbl_Categories] m
join
ProductCatIDs on ProductCatIDs.ID = m.ParentID
),
ProductsFiltered as (
SELECT DISTINCT tbl_Products.*
FROM tbl_ProductCategories RIGHT OUTER JOIN
tbl_Products ON tbl_ProductCategories.ProductID = tbl_Products.ID
WHERE tbl_Products.Enabled = 'true' and (tbl_ProductCategories.CategoryID IN (
select id
from ProductCatIDs
))),
#ProductsNumbered as (
Select *, ROW_NUMBER() OVER (order by ID DESC) as RowNumber FROM ProductsFiltered
)
SELECT * FROM #ProductsNumbered As tbl_Products
Where
RowNumber > @FirstRec
And RowNumber < @LastRec
SELECT Count(*) FROM #ProductsNumbered
最后一条语句返回错误 Invalid object name '#ProductsNumbered'
如何重用#ProductsNumbered 以避免仅为一个简单的计数器计算整个 SP?
SELECT Count(*) FROM #ProductsNumbered
【问题讨论】:
标签: sql sql-server pagination temp-tables reusability