我试图做一个“用”来遍历一些数据(这样做很好)。但是之后,我想返回依赖于bit参数的数据。重要的是这在函数内部。下面基本上是我的代码在做什么。
WITH StuffChain AS ( //initial union all //more )
之后,我正在尝试做类似的事情
CASE WHEN @MyParamVal = 1 THEN SELECT TOP (1) * FROM StuffChain ELSE SELECT * FROM StuffChain END RETURN
SQL不是我的强项,我仍然在学习抱歉。我也不确定是否使用内联或多语句功能
编辑:当我给案件时,我用它来解释我要返回的东西,不一定是我将要使用的东西。我用它来描述我所需要的东西,只要知道的话就知道一点。
首先,使用TOP
无ORDER BY
是没有多大意义,因为它提供了针对其选择前几行没有秩序。在这种情况下,我们可以尝试使用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);