SQL Case with multiple values 在SQL中使用多个值的Case语句

16 浏览
0 Comments

SQL Case with multiple values 在SQL中使用多个值的Case语句

以下语句是否有更精简的形式?

SELECT Name, Case StatusID WHEN 1 THEN 'Alive' WHEN 2 THEN 'Alive' WHEN 3 THEN 'Alive' WHEN 4 THEN 'Dying' ELSE 'Dead' END FROM People

例如:

CASE StatusID WHEN 1,2,3 THEN 'Alive'

或者

CASE StatusID WHEN 1 OR 2 OR 3 THEN 'Alive'

0
0 Comments

(SQL Case with multiple values)这个问题的出现的原因是需要根据不同的StatusID值来给People表中的Name字段赋予不同的状态值。在这个例子中,当StatusID的值为1、2、3时,Name字段的值为"Alive";当StatusID的值为4时,Name字段的值为"Dying";其他情况下,Name字段的值为"Dead"。

解决这个问题的方法是使用SQL的Case语句。在这个例子中,Case语句根据StatusID的不同值,分别对Name字段赋予不同的状态值。当StatusID的值为1、2、3时,赋值为"Alive";当StatusID的值为4时,赋值为"Dying";其他情况下,赋值为"Dead"。

具体的SQL代码如下所示:

SELECT

Name,

Case WHEN StatusID IN ( 1, 2, 3 ) THEN 'Alive' WHEN StatusID = 4 THEN 'Dying' ELSE 'Dead' END

FROM People

以上就是解决(SQL Case with multiple values)这个问题的方法。通过使用SQL的Case语句,根据不同的StatusID值来为People表中的Name字段赋予不同的状态值。

0
0 Comments

在Oracle中,使用CASE语句可以根据不同的条件返回不同的值。在给定的示例中,如果statusid小于4,则返回'Alive',如果statusid等于4,则返回'Dying',否则返回'Dead'。

另外,还可以使用DECODE函数来实现相同的功能。DECODE函数是Oracle特有的,它接受一系列的键值对,如果输入的值匹配某个键,则返回相应的值。在这个例子中,可以使用DECODE函数来实现相同的逻辑,例如DECODE(statusid, 1, 'Alive', 2, 'Alive', 3, 'Alive', 4, 'Dying', 'Dead')。

然而,在MSSQL 2008 R2中,没有DECODE函数可用。因此,需要使用其他方法来实现相同的逻辑。可以使用CASE语句来代替DECODE函数。以下是在MSSQL 2008 R2中使用CASE语句实现相同逻辑的示例代码:

SELECT Name, 
  CASE 
    WHEN statusid < 4 THEN 'Alive'
    WHEN statusid = 4 THEN 'Dying'
    ELSE 'Dead' 
  END AS some_alias
FROM people

通过使用CASE语句,可以根据不同的条件返回不同的值,从而实现与DECODE函数相同的功能。这样就可以在MSSQL 2008 R2中解决没有DECODE函数的问题。

0