我有以下查询,它工作并产生我需要它的输出。为什么工作的SQL查询不能用作子查询?
SELECT
*
FROM
(SELECT
ref_year, ref_no, min(sequence_number) sequence_number
FROM
case_decisions
WHERE
stage = 'C'
AND
decision_code <> 'IA'
GROUP BY
ref_year,
ref_no
) temp
INNER JOIN /* Produce table of first decisions only */
case_decisions cdec
ON
temp.ref_year = cdec.ref_year
AND
temp.ref_no = cdec.ref_no
AND
temp.sequence_number = cdec.sequence_number;
但是,如果我尝试使用它作为一个子查询联接(如下)到另一个工作查询我得到一个错误说fdec.ref_no是不是一个有效的标识符。我认为我编写子查询的方式存在问题,但无法找到它。
LEFT OUTER JOIN
(SELECT
*
FROM
(
SELECT
ref_year, ref_no, min(sequence_number) sequence_number
FROM
case_decisions
WHERE
stage = 'C'
AND
decision_code <> 'IA'
GROUP BY
ref_year,
ref_no
) temp
INNER JOIN /* Produce table of first decisions only */
case_decisions cdec
ON
temp.ref_year = cdec.ref_year
AND
temp.ref_no = cdec.ref_no
AND
temp.sequence_number = cdec.sequence_number
) fdec
ON
resolved.ref_year = fdec.ref_year
AND
resolved.ref_no = fdec.ref_no
给人一种完整的查询:
SELECT
resolved.*,
fdec.decision_code initial_decision
FROM
(SELECT
t1.ref_year,
t1.ref_no,
t1.date_decision_status_achieved,
t1.sequence_number
FROM
case_decisions t1
LEFT OUTER JOIN
case_decisions t2
ON
(t1.ref_year = t2.ref_year
AND
t1.ref_no = t2.ref_no
AND
t1.sequence_number < t2.sequence_number)
WHERE
t2.ref_year IS NULL
AND
t2.ref_no IS NULL
AND
(t1.status = 8 OR t1.status =11)
AND
t1.decision_code <> 'IA'
AND
t1.date_decision_status_achieved between '01-APR-2008' and '01-JUN-2008' /* dates for testing purposes only */) resolved
LEFT OUTER JOIN
(SELECT
*
FROM
(SELECT
ref_year, ref_no, min(sequence_number) sequence_number
FROM
case_decisions
WHERE
stage = 'C'
AND
decision_code <> 'IA'
GROUP BY
ref_year,
ref_no
) temp
INNER JOIN /* Produce table of first decisions only */
case_decisions cdec
ON
temp.ref_year = cdec.ref_year
AND
temp.ref_no = cdec.ref_no
AND
temp.sequence_number = cdec.sequence_number) fdec
ON
resolved.ref_year = fdec.ref_year
AND
resolved.ref_no = fdec.ref_no
;
我看了一下类似的SO问题,但没有似乎想要我什么(我期望的指示,我做错了什么)。对于我在这里失踪的任何建议?
请发布完整的查询给出问题。 – RedFilter 2012-07-12 13:38:55
对此有一个downvote,有人可以告诉我为什么这样我可以避免重复错误?谢谢。 – 2012-07-12 13:50:36
在最后一个查询中,您有“SELECT resolved。*,fdec.decision_code initial_decision”。 initial_decision应该是什么?我假设它不是列名,因为我没有在其他地方看到它,并且之前没有逗号。从来没有使用甲骨文,我从来没有见过这么好奇之前,它意味着什么/用于。 – Bryan 2012-07-12 14:06:18