我收到了这个PostgreSQL查询:
git branch --merged
但是当我执行它时,我收到了这个错误:
SELECT Sum(CASE
WHEN p LIKE '%add%'
AND p NOT LIKE '%add post%' THEN counter
ELSE 0
end) AS "AGREGAR",
Sum(IF p LIKE '%add%' AND p NOT LIKE '%add post%' THEN 1 ELSE 0 END IF ) AS P
FROM (SELECT l.action AS p,
Count(l.userid) AS counter
--r.name
FROM mdl_log AS l
JOIN mdl_role_assignments AS ra
ON l.userid = ra.userid
JOIN mdl_role AS r
ON ra.roleid = r.id
JOIN mdl_course AS c
ON c.id = l.course
AND course = 12033
AND roleid = 3
GROUP BY roleid,
l.action,
r.name
ORDER BY l.action) AS "P"
如果发动机不能识别" p"子查询中的别名,但是当我把" p"在选择中没有了,它工作正常。我究竟做错了什么?
答案 0 :(得分:1)
将if
条件的行更改为正常case
表达式:
Sum(CASE WHEN p LIKE '%add%' AND p NOT LIKE '%add post%' THEN 1 ELSE 0 END) AS P
你应该没事。 if
语句用于函数和触发器等中使用的PL / pgSQL语言。