SQL中是否有类似Excel IF语句的内容

时间:2013-08-05 01:40:53

标签: sql

只是想知道是否有办法根据最多添加4个字段输出未存储的结果?

有一张表格,其中包含不同类别,成人,儿童和工作人员服务的乘客数量,我想根据未存储的这些字段的结果尝试输出一个数字。

例如,如果添加的结果是> 15,则输出45,如果> 9输出35.输出是所需教练的大小。

我知道我可以在提取数据后在Excel中执行此操作但是想知道它是否可以在数据之前完成并包含在数据中吗?

任何建议和帮助表示赞赏。

4 个答案:

答案 0 :(得分:3)

根据您使用的SQL程序,大多数提供CASE WHEN语句(请参阅此SQL Fiddle example

CREATE TABLE CaseValues(
  Value INT
)

INSERT INTO CaseValues
VALUES (1)
  , (16)
  , (9)

SELECT CASE WHEN Value > 15 THEN 45
  WHEN Value BETWEEN 6 AND 14 THEN 35
  ELSE 25 END AS Result
FROM CaseValues

您还可以在多个列see this example上使用CASE WHEN

答案 1 :(得分:2)

标准SQL CASE表达式是与Excel IF(..)函数最接近的等价物:

SELECT 
    CASE WHEN Col1=Col2 THEN 'Foo'
         WHEN Col1>Col2 THEN 'Bar'
         WHEN Col3 Is NULL THEN Col4
         ELSE 'unknown'
    END  As [CaseColumn]
FROM YourTable

答案 2 :(得分:1)

您可以通过查询数据来执行此操作:

select t.*,
       (case when Adult + Child + Infant + staff > 15 then 45
             when Adult + Child + Infant + staff > 9 then 35
        end) as CoachSize
from t;

您也可以使用view执行此操作,以便它可以像桌子一样使用:

create view vw_t as
    select t.*,
           (case when Adult + Child + Infant + staff > 15 then 45
                 when Adult + Child + Infant + staff > 9 then 35
            end) as CoachSize
    from t;

并且,在某些数据库中,您可以将计算列直接添加到表定义中。

答案 3 :(得分:0)

您可以使用CASE语句。这是语法。

    SELECT 
    CASE WHEN DayOfBirth > 15 
            THEN 45
         WHEN DayOfBirth > 9
            THEN 35
        ELSE
             0
    END
    FROM BirthDaysTable