postgresql case when 输出多行

postgresql case when 输出多行

PostgreSQL中的CASE WHEN语句是用于在查询中根据不同的条件返回不同的结果。在实际应用中,有时候我们需要输出多行数据,每行数据根据不同条件进行处理。在这种情况下,我们可以使用CASE WHEN语句来实现这样的需求。

CASE WHEN语法

postgresql case when 输出多行

CASE WHEN语句的基本语法如下:

SELECT
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
        ELSE default_result
    END AS alias_name
FROM
    table_name;

其中,condition1condition2等是条件表达式,result1result2等是每个条件满足时返回的结果,default_result是在所有条件都不满足时返回的默认结果,alias_name是结果列的别名。

示例

假设有一个学生成绩表grades,包含了学生的姓名、科目和成绩。现在我们需要根据不同的条件输出多行数据,比如对于每个学生,对于及格的成绩显示为”及格”,对不及格的成绩显示为”不及格”。我们可以使用CASE WHEN语句来实现这个需求。

CREATE TABLE grades (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    subject VARCHAR(50),
    score INT
);

INSERT INTO grades (name, subject, score)
VALUES
    ('Alice', 'Math', 85),
    ('Alice', 'English', 75),
    ('Bob', 'Math', 60),
    ('Bob', 'English', 45),
    ('Charlie', 'Math', 70),
    ('Charlie', 'English', 80);

SELECT
    name,
    subject,
    CASE
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS result
FROM
    grades
ORDER BY
    name, subject;

运行以上SQL语句,我们可以得到如下结果:

 name   | subject | result 
--------+---------+--------
 Alice  | English | 及格
 Alice  | Math    | 及格
 Bob    | English | 不及格
 Bob    | Math    | 及格
 Charlie | English | 及格
 Charlie | Math    | 及格

在这个示例中,我们通过CASE WHEN语句根据成绩是否及格来输出不同的结果,从而实现了对多行数据的条件处理。

总结

在实际应用中,我们经常需要对多行数据根据不同的条件进行处理,使用CASE WHEN语句可以很方便地实现这个需求。通过合理地设置条件表达式和结果值,我们可以灵活地对数据进行处理,使得查询结果更加符合我们的预期。在使用CASE WHEN语句时,需要注意保持语法规范,确保条件和结果的一一对应关系,从而避免出现错误。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程