2

只是想看看是否有一种方法可以输出基于最多 4 个字段的添加未存储的结果?

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

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

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

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

4

4 回答 4

3

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

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

您还可以CASE WHEN在多个列上使用,请参阅此示例

于 2013-08-05T01:47:27.667 回答
2

标准 SQLCASE表达式最接近 ExcelIF(..)函数:

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
于 2013-08-05T01:47:41.803 回答
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;

您也可以使用 a 来执行此操作,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;

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

于 2013-08-05T01:49:19.310 回答
0

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

    SELECT 
    CASE WHEN DayOfBirth > 15 
            THEN 45
         WHEN DayOfBirth > 9
            THEN 35
        ELSE
             0
    END
    FROM BirthDaysTable
于 2013-08-05T01:51:28.337 回答