列引用是不明确的SQL错误

时间:2017-03-03 20:47:29

标签: sql amazon-redshift

我尝试加入4个不同的表来计算项目收入,具体取决于某些条件,我将在我能够使用4个表构建正确的视图后编写sql查询...下面是查询对于视图而言,我对ik的列错误很明显...有人可以解释一下原因吗? 谢谢你的帮助!

select top 5 g.*
from (
    select *
    from (
        (
            select a.ik
                ,b.upc as upc
                ,b.class
                ,a.units
            from Tbl1 a
            join TBL2 b
                on a.ik = b.ik
            ) c join Tbl3 d
            on c.ik = d.ik
        ) e
    join Tbl4 f
        on e.ik = f.ik
    ) g

2 个答案:

答案 0 :(得分:2)

你可以在加入时运行select *, 你应该把表别名

select top 5 g.*
from (
    select *
    from (c.*,b.*
        (
            select a.ik
                ,b.upc as upc
                ,b.class
                ,a.units
            from Tbl1 a
            join TBL2 b
                on a.ik = b.ik
            ) c join Tbl3 d
            on c.ik = d.ik
        ) e
    join Tbl4 f
        on e.ik = f.ik
    ) g

答案 1 :(得分:0)

很难理解这个查询的作用,但由于您使用的是子选择,请在每个查询的选择部分中尝试别名ik,其中包含在select中(即{{ 1}})。

您也不应在外部选择查询中使用select a.ik as 'aliased_ik',而是使用每个单独的列名称。如果.*位于外部选择查询中,您也应该将其设为别名。