2016-04-25 191 views
0

我试图运行PostgreSQL中多case语句,但我有多个case语句

ERROR: invalid input syntax for integer: "Blue"

这里的错误是我的语法 - 什么,我需要做的更新,使这个有效的语法?

Select 
id 
,case 
    when empid = 1 then blue 
    when empid = 2 then green 
    when empid = 3 then red 
    else empid 
end as employeecolor 
From employees 
+1

好了,认识到伪列“employeecolor”需要一个单一类型。你告诉postgres一方面该类型应该是一个整数(因为在某些情况下你会返回'empid'本身),但另一方面,你说这个类型是一个字符串('red ','蓝色'等)。它不能兼而有之。 – jmelesky

+0

@jmelesky - 那就是我所追求的。该列是一个int,但我希望它返回一个字符串值。 –

回答

1

只需添加::text这样的情况:即

Select 
id 
,case 
when empid = 1 then blue 
when empid = 2 then green 
when empid = 3 then red 
else empid::text 
end as employeecolor 
From employees