1。
select
case @SamplingStepDateValue when 'A' then *
else top 1 *
end
From @tbl 2。
。。(已经选好内容,需要排序)
ORDER BY
case @SamplingStepDateValue ='A'then
RemediationId
, TYear_seq DESC
, WTHRGH_Seq DESC
, CONST_Seq DESC
, RECD_Seq DESC
, CLEAN_Seq DESC
, REF_Seq DESC
case @SamplingStepDateValue ='E' then
DATESAM_DATE ASC
case @SamplingStepDateValue ='L' then
DATESAM_DATE DESC
select
case @SamplingStepDateValue when 'A' then *
else top 1 *
end
From @tbl 2。
。。(已经选好内容,需要排序)
ORDER BY
case @SamplingStepDateValue ='A'then
RemediationId
, TYear_seq DESC
, WTHRGH_Seq DESC
, CONST_Seq DESC
, RECD_Seq DESC
, CLEAN_Seq DESC
, REF_Seq DESC
case @SamplingStepDateValue ='E' then
DATESAM_DATE ASC
case @SamplingStepDateValue ='L' then
DATESAM_DATE DESC
计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。
CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。 语法
简单 CASE 函数:CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
ENDCASE 搜索函数:CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END参数
input_expression是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft® SQL Server™ 表达式。 WHEN when_expression使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。 n占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。THEN result_expression当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。result expression 是任意有效的 SQL Server 表达式。 ELSE else_result_expression当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。WHEN Boolean_expression使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。 结果类型
从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。 第一个语法上可以。但是你的*,TOP 1 * 不是有效的SQL表达式。
第二个语法都不对。
1、case when condition then value1 else value2 end
2、decode(expression, item1, value1, item2, value2, ..., defautlValue)
第一个等价于:if(@SamplingStepDateValue='A')
select * from @tb1
else
select top 1 * from @tb1第二个可以采用字符串动态拼接。
case @SamplingStepDateValue when 'A' then *
else top 1 *
end
From @tbl
-->不能用*,要具体一列
declare @sqltext varchar(128)
select @sqlText='select '+case when @SamplingStepDateValue='A' then '*' else 'top 1 *' end +' from @tbl'
exec(@sqlText)
2.每一个order by 的结果都要单独用一封闭的case when else end
不能一个case通杀.