如何用 Postgres 编写 case 表达式?我有这个
case
when rc.stat = 0 Then unpaid
when rc.stat = 1 Then paid
when rc.stat = 2 Then dispute
else rc.stat
end
但是当我去运行语句时,我得到一个错误
Error: column "unpaid" does not exist
我还尝试了文本值周围的双引号和括号,但所有这些选项都会给我错误。请注意,未支付、已支付、争议的值不是数据库中的字段,而是我要编写的文本值。
你需要一个字符串常量,例如
'unpaid'
.因为 CASE 表达式的所有分支都必须返回相同的数据类型,所以您还需要将
stat
列强制转换text
为(假设它是某种数字,因为您将它与一个数字进行比较)由于仅用
=
作比较运算符,因此可以将该表达式简化为: