如何在表中添加具有与同一表相对应的值的新列?

时间:2019-04-03 10:02:29

标签: sql postgresql

我的表格中有一个带有int值的status列。如何为int赋值,还是必须在表中创建一个新列?

我试图更改表,但是最好的方法是什么?

select status from table1;

如果我运行上面的查询,我们得到-

id status
1  1
2  2
3  1
4  5

我要输出-

id  status
1   Accepted
2   Completed
3   Accepted
4   Declined

3 个答案:

答案 0 :(得分:1)

您可以使用案例,请参阅此SO问题 PostgreSQL CASE ... END with multiple conditions。查询将如下所示:

SELECT
 id, 
 CASE
  WHEN (status = 1)  THEN 'Accepted'  
  WHEN status=2 then 'Completed'
  WHEN status=3 then 'Accepted'
  WHEN sttaus=4 then 'Declined'
 END AS status

FROM table1 ;

答案 1 :(得分:1)

使用case expression,postgres

select status,
       case 
         when status=1 then 'Accepted'
         when status=2 then 'Completed'
         when status=3 then 'Accepted'
         when sttaus=4 then 'Declined'
       end mystatus
from table1;

答案 2 :(得分:1)

正确的case表达式为:

select id,
       (case status
          when 1 then 'Accepted'
          when 2 then 'Completed'
          when 5 then 'Declined'
        end) as status
from table1;

您还可以通过联接到派生表来做到这一点:

select t1.id, v.status
from table1 t1 left join
     (value (1, 'Accepted'), (2, 'Completed'), (5, 'Declined')
     ) v(status_int, status)
     on t1.status = v.status_int;

之所以这样说是因为您可能应该有一个有关状态值的参考表。在这种情况下,将在查询中动态创建参考表。但是它可能应该是数据库中的真实表。