我的表Ce_Data有一列" Fut_ID"
为什么我会得到一个不明确的"第一行出错? TX" Fut_ID"不起作用
SELECT "Fut_ID"
FROM (
SELECT *
FROM "Ce_Data" AS M
JOIN (SELECT "Fut_ID", MAX("Date") AS "Most_Recent"
FROM "Ce_Data"
GROUP BY "Fut_ID"
) AS R
ON R."Fut_ID" = M."Fut_ID" AND R."Most_Recent" = M."Date"
) AS TX
答案 0 :(得分:1)
外部查询从内部子查询中选择Fut_ID
。但是,有两个不同的来源可供选择Fut_ID
来自:table Ce_Data
(别名M
)和带有别名的派生表{ {1}}。您可以通过在派生表中使用字段的别名来解决此问题:
R
答案 1 :(得分:1)
由于Fut_ID
位于两个表中,因此出现了模糊错误,因此子查询中的含义不明确(*
获取所有列名称,甚至是重复项。只需明确列出第二个表中的列:
SELECT TX.*
FROM (SELECT M.*
FROM "Ce_Data" M JOIN
(SELECT "Fut_ID", MAX("Date") AS "Most_Recent"
FROM "Ce_Data"
GROUP BY "Fut_ID"
) R
ON R."Fut_ID" = M."Fut_ID" AND R."Most_Recent" = M."Date"
) TX;
(我添加了TX.*
,因为否则查询处理没有意义。)
或者,更好的是,使用窗口函数:
SELECT TX.*
FROM (SELECT M.*, MAX("Date") OVER (PARTITION BY "Fut_ID") as "Most_Recent"
FROM "Ce_Data" M
) M
ON "Most_Recent" = "Date"