SQL 服务器查询的动态过滤器
Dynamic Filter to the SQL Server Query
我有如下查询
WITH TempResult AS(
SELECT AccessionNumber FROM [CASE]
UNION ALL
SELECT AccessionNumber FROM CaseReassign),
TempCount AS (SELECT COUNT(AccessionNumber) AS MaxRows FROM TempResult)
SELECT * FROM TempResult, TempCount
这可以很好地获取行及其计数。但当
有人可以帮助我如何为此 select 查询动态添加过滤器吗?举例来说,我需要类似下面的东西,但它会抛出错误 "Common Table Expression defined but not used"
DECLARE @filter nvarchar(max);
SET @filter = 'WHERE AccessionNumber LIKE ''%Case%'''
DECLARE @sql nvarchar(max);
WITH TempResult AS(
SELECT AccessionNumber FROM [CASE]
UNION ALL
SELECT AccessionNumber FROM CaseReassign),
TempCount AS (SELECT COUNT(AccessionNumber) AS MaxRows FROM TempResult)
SELECT @sql = 'SELECT * FROM TempResult, TempCount ' + @filter
EXEC sp_executesql @sql
动态 SQL 定义了它自己的范围。
在动态 SQL 中,您无法访问局部变量。据我所知,这也算作本地定义的 CTE。
因此我认为您需要将 CTE 纳入动态 SQL。
我有如下查询
WITH TempResult AS(
SELECT AccessionNumber FROM [CASE]
UNION ALL
SELECT AccessionNumber FROM CaseReassign),
TempCount AS (SELECT COUNT(AccessionNumber) AS MaxRows FROM TempResult)
SELECT * FROM TempResult, TempCount
这可以很好地获取行及其计数。但当 有人可以帮助我如何为此 select 查询动态添加过滤器吗?举例来说,我需要类似下面的东西,但它会抛出错误 "Common Table Expression defined but not used"
DECLARE @filter nvarchar(max);
SET @filter = 'WHERE AccessionNumber LIKE ''%Case%'''
DECLARE @sql nvarchar(max);
WITH TempResult AS(
SELECT AccessionNumber FROM [CASE]
UNION ALL
SELECT AccessionNumber FROM CaseReassign),
TempCount AS (SELECT COUNT(AccessionNumber) AS MaxRows FROM TempResult)
SELECT @sql = 'SELECT * FROM TempResult, TempCount ' + @filter
EXEC sp_executesql @sql
动态 SQL 定义了它自己的范围。 在动态 SQL 中,您无法访问局部变量。据我所知,这也算作本地定义的 CTE。
因此我认为您需要将 CTE 纳入动态 SQL。