【发布时间】:2019-07-23 15:31:10
【问题描述】:
我需要一些关于 SQL 的帮助:
SELECT
servidor,
matricula,
funcao,
TO_CHAR(admissao, 'dd/mm/yyyy'),
vatagens,
escolaridade
FROM
(
SELECT DISTINCT
pf.nome AS servidor,
m.matricula AS matricula,
ca.descricao AS funcao,
TO_CHAR(c.dataadmissao, 'dd/mm/yyyy') AS "admissao",
LISTAGG(if.valorreferencia
|| '-'
|| ev.descricaoreduzida, ';') WITHIN GROUP(
ORDER BY
if.valorreferencia ASC
) AS vantagens,
ne.descricao AS escolaridade
FROM
pessoafisica pf
INNER JOIN matriculafp m ON m.pessoa_id = pf.id
INNER JOIN vinculofp v ON m.id = v.matriculafp_id
INNER JOIN fichafinanceirafp ff ON v.id = ff.vinculofp_id
INNER JOIN itemfichafinanceirafp if ON ff.id = if.fichafinanceirafp_id
INNER JOIN eventofp ev ON ev.id = if.eventofp_id
INNER JOIN folhadepagamento fp ON ff.folhadepagamento_id = fp.id
INNER JOIN contratofp c ON v.id = c.id
INNER JOIN cargo ca ON c.cargo_id = ca.id
INNER JOIN lotacaofuncional lf ON v.id = lf.vinculofp_id
INNER JOIN unidadeorganizacional und ON lf.unidadeorganizacional_id = und.id
INNER JOIN hierarquiaorganizacional horg ON und.id = horg.subordinada_id
LEFT JOIN nivelescolaridade ne ON pf.nivelescolaridade_id = ne.id
WHERE
if.mes = 7
AND if.ano = 2019
AND horg.descricao = 'Secretaria Municipal de Educação - SEME'
--AND ev.id = if.eventofp_id
)
GROUP BY
servidor,
matricula,
funcao,
admissao,
vatagens,
escolaridade
这是错误:
ORA-00904: "VATAGENS": 标识符无效 00904. 00000 - "%s: 无效标识符” *原因: *操作:行错误:47 列:5
【问题讨论】:
-
一个明显的问题:您的子查询(在
GROUP BY之前结束)没有别名。所有派生表都需要 Oracle 中的别名。 -
vatagens列不在子查询中,但在外部查询中使用。在子查询列中是vantagens