在 PostgreSQL 中创建临时列

Creating Temporary Columns in PostgreSQL

我有一个 table 具有以下内容:

| Customer | Order Count|
 -----------------------
|     1    |      1     |
|     2    |      2     |
|     3    |      1     |

并且我想创建一个额外的列,所以我最终得到以下内容:

| Customer | Order Count| Status |
 --------------------------------
|     1    |      1     |  new   |
|     2    |      2     |  old   |
|     3    |      1     |  new   |

我该如何构造我的查询才能这样做?

编辑:状态标签的逻辑是新客户只有一个订单,老客户有> 1

假设1表示“新”,2表示“旧”,您可以使用case表达式:

select t.*, 
    case order_count 
        when 1 then 'new' 
        when 2 then 'old'
        else '??'
    end as status
from mytable t

或者,如果您要创建计算列:

alter table mytable 
    add column status varchar(10)
    generated always as (
        case order_count 
            when 1 then 'new' 
            when 2 then 'old'
            else '??'
        end 
    )
    stored
;