【发布时间】:2015-09-16 22:07:34
【问题描述】:
我得到了这个 PostgreSQL 查询:
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"
但是当我执行它时,我得到了这个错误:
ERROR: error de sintaxis en o cerca de «p»
LINE 6: Sum(IF p LIKE '%add%' AND p NOT LIKE '%add pos...
^
********** Error **********
ERROR: error de sintaxis en o cerca de «p»
SQL state: 42601
Character: 216
这就像引擎无法识别子查询中的“p”别名,但是当我在选择中不再添加“p”时,它工作正常。我究竟做错了什么?
【问题讨论】:
-
sql中没有
IF。你可以试试case ...
标签: postgresql if-statement subquery alias sql-like