SQL Table 值函数 - Return 来自 'WITH' 的某些数据基于参数值

SQL Table Valued Function - Return certain data from 'WITH' based on parameter value

我正在尝试 "with" 来循环遍历一些数据(它做得很好)。但是在那之后,我想 return 数据依赖于一个位参数。重要的是这是在函数内部。下面基本上是我的代码在做什么。

WITH StuffChain 
AS (
   //initial
    union all
   //more
)

在此之后,我正在尝试做类似

的事情
CASE WHEN @MyParamVal = 1 THEN
      SELECT TOP (1) * FROM StuffChain
ELSE
      SELECT * FROM StuffChain
END
RETURN

SQL不是我的强项还在学习中抱歉。我也不确定是否使用内联或多语句函数

编辑:当我给出案例时,我用它来解释我对 return 的要求,而不一定是我将使用的内容。我用它来描述我需要什么,如果这有意义的话,我知道的很少。

首先,使用 TOP 而不使用 ORDER BY 有点没有意义,因为它没有提供 select 前几行的顺序。在这种情况下,我们可以尝试使用ROW_NUMBER来控制顺序:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY some_col) rn
    FROM StuffChain
)

SELECT *
FROM cte
WHERE
    (rn = @MyParamVal) OR (@MyParamVal <> 1);

我们可以使用 Table 变量,例如Declare @TEMP Table (intcol int,...) 函数内部。

Declare @TEMP Table (intcol int,...)

WITH StuffChain 
AS (
   //initial
    union all
   //more
)
SELECT * INTO @TEMP FROM StuffChain;

--do what ever you want with temp table

您可以进行如下操作。这只是解决方案之一。你也可以用许多其他方式来做。

WITH StuffChain 
AS (
   //initial
    union all
   //more
)

创建 CTE 后,尝试以下

SELECT TOP (CASE WHEN @MyParamVal = 1 THEN 1 ELSE 
    (SELECT COUNT(1) FROM StuffChain) END  *
FROM StuffChain
order by <column> <ASC/DESC>;