为什么内部联接不能在postgresql中使用case子句

为什么内部联接不能在postgresql中使用case子句,sql,postgresql,Sql,Postgresql,我有这个SQL查询,但它不起作用,我很困惑为什么它不起作用。有没有人有这样的例子或解决方案 SQL: 错误: “case”处或附近出现语法错误 e.id=a.id 如果没有一些示例数据,或者没有对您试图实现的目标的任何描述,那么您可能没有连接谓词,因为您确实打算使用联合 SELECT e.state, case when e.state = 'a' then 'cation' else 'pasive' end FROM ( SELECT * FROM miss UNIO

我有这个SQL查询,但它不起作用,我很困惑为什么它不起作用。有没有人有这样的例子或解决方案

SQL:

错误:

“case”处或附近出现语法错误 e.id=a.id

如果没有一些示例数据,或者没有对您试图实现的目标的任何描述,那么您可能没有连接谓词,因为您确实打算使用
联合

SELECT
  e.state,
  case when e.state = 'a' then 'cation'  else 'pasive' end 
FROM
(
   SELECT * FROM miss
   UNION ALL
   SELECT * FROM mr
)
  e
如果没有一些示例数据,或者没有对您试图实现的目标的任何描述,那么您可能没有连接谓词,因为您确实打算使用
联合

SELECT
  e.state,
  case when e.state = 'a' then 'cation'  else 'pasive' end 
FROM
(
   SELECT * FROM miss
   UNION ALL
   SELECT * FROM mr
)
  e

你怎么知道它不起作用?它是否会导致错误消息?或者它返回的结果与您预期的不同吗?您没有将列拆分为
。因此,您只需在case表达式之前包含
,即可工作。这是错误:错误:
语法错误,如@YogeshSharma所建议,您缺少
介于
e.state
case
之间。您缺少一个连接条件。您如何知道它不起作用?它是否会导致错误消息?或者它返回的结果与您预期的不同吗?您没有将列拆分为
。因此,您只需在case表达式之前包含
,即可工作。这是错误:错误:
语法错误,如@YogeshSharma所建议,您缺少
介于
e.state
case
之间。您缺少一个连接条件。谢谢,这很有帮助。谢谢,这很有帮助。
SELECT
  e.state,    -- you were missing a , here
  case when e.state = 'a' then 'cation'  else 'pasive' end 
from
  miss as e
INNER JOIN 
  mr as a
    -- You're missing the join predicate here : ON e.something = a.something
SELECT
  e.state,
  case when e.state = 'a' then 'cation'  else 'pasive' end 
FROM
(
   SELECT * FROM miss
   UNION ALL
   SELECT * FROM mr
)
  e