DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
Run Code Online (Sandbox Code Playgroud)
我在网上看到了这个示例代码,但我找不到一个没有表达式的示例,并且它有多个WHEN,所以我想知道这种类型的东西是否正常:
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN (select ...) = 1 THEN 'Other Value'
WHEN (select ...) = 2 THEN 'Other Value 2'
ELSE 'Other'
END
Run Code Online (Sandbox Code Playgroud)
或者我是否需要为每一行说CASE WHEN?
是的,那没关系,但是我会垂直排列"WHEN"并解释它更像这样:
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
Run Code Online (Sandbox Code Playgroud)
格式化可能只是一个降价故障,但(select...)在您的示例中复杂应该是一个更简单的代码段.
案例采用以下形式
CASE WHEN Condition THEN Result
WHEN Condition2 THEN Result2
ELSE Default
END
Run Code Online (Sandbox Code Playgroud)
这假设您使用Microsoft SQL Server的其他DBMS可能不同