列含糊不清地定义错误 oracle sql

Column ambiguously defined error oracle sql

我有以下问题 sql code.I 有一个 table 像这样: Student(st_id,st_fname,st_lname) 和访问次数 (visit_id,st_id,visit_cost).

我想做的是 select 每个学生的平均 visit_cost 超过 500,然后 st_fname 和 st_lname。我写了以下代码:

select avg (v.visit_cost) as average_cost, s.st_fname, s.st_lname   
from      student s
inner join visitings v  on s.st_id=v.st_id
group by st_id
having avg(v.visit_cost)>=500;

在输出中显示 "column ambiguously defined" 错误。如果可能的话,你能帮我解决这个问题吗?

由于您没有回答评论中的问题,我假设 amount_paid 列来自 visitings table 作为 student table看起来像一个维度 table。

column ambiguity 错误是由于 st_id 列存在于两个 table 中。所以 SQL 不知道你指的是哪个 table 的 st_id。试试这个。

select avg (v.visit_cost) as average_cost, s.st_fname, s.st_lname   
from      student s
inner join visitings v on s.st_id=v.st_id
group by s.st_id
having avg(v.amount_paid)>=500;

请在此处查看 SQLFiddle 演示

http://sqlfiddle.com/#!9/93027a/2