这里有一些伪代码来表示我想要做的事情:
SELECT A.ID
--, B.DESCRIPTION
--, B.YEAR
FROM TABLE_A A
INNER JOIN (SELECT ID
, DESC1 || ' : ' || DESC2 AS "Description"
, MAX(YEAR)
FROM TABLE_B
GROUP BY ID
, DESC1 || ' : ' || DESC2) B
ON A.ID = B.ID
就目前而言,这个查询运行得很好。如果我从SELECT语句中单独取消注释这两个字段,则每个字段都会给我一个无效的标识符错误。
如何从此子查询中访问这些聚合和连接的字段?
答案 0 :(得分:1)
如果您不需要,请不要用双引号别名。
您需要将MAX(YEAR)别名为YEAR,以便正确引用它。
SELECT A.ID
, B.DESCRIPTION
, B.YEAR
FROM TABLE_A A
INNER JOIN (SELECT ID
, DESC1 || ' : ' || DESC2 AS DESCRIPTION
, MAX(YEAR) AS YEAR
FROM TABLE_B
GROUP BY ID
, DESC1 || ' : ' || DESC2) B
ON A.ID = B.ID
答案 1 :(得分:0)
我相信下面的内容会给你所需要的东西。我使用了基于year
和id
的其他加入。可能如果您提供一些样本数据和确切的预期输出,也可能有更好的方法。
SELECT A.ID
,B.DESCRIPTION
,B.YEAR
FROM TABLE_A A
INNER JOIN
(select b1.* from table_b b1
inner join
(SELECT ID
, DESC1 || ' : ' || DESC2 AS "Description"
, MAX(YEAR)
FROM TABLE_B
GROUP BY ID
, DESC1 || ' : ' || DESC2
) b2
on b1.id=b2.id and b1.year=b2.year
) B
ON A.ID = B.ID