【发布时间】:2013-05-18 12:37:14
【问题描述】:
我有一个销售表,其中显示每周的产品编号、销售价值和销售量。我需要构建一个报告来显示这些值和数量以及前一周的等效值。我还有一个 Weeks 表,它为我提供了当前周的前一周编号(例如,如果当前周是 2013-01,那么前一周的值是 2012-52)。
因此,我认为从 Weeks 表中加入有关产品编号和前一周编号的 Sales 的另一个实例会很简单。但是 Teradata 不允许我这样做,最初它抛出了 Improper column reference in the search condition of a joined table 的错误,当我重新排序查询以引用 Sales 的第二个实例之前的 Weeks 时,它现在尝试运行但给了我一个 No more spool space 错误,所以我认为我的方法是不正确的。我的SQL如下:
select s.Week_Number,
s.Product_Number,
s.Sales_Value,
s.Sales_Volume,
s_lw.Sales_Value,
s_lw.Sales_Volume
from SALES s
inner join WEEKS w
on s.Week_Number = w.Week_Number
left join SALES s_lw
on s.Product_Number = s_lw.Product_Number
and s_lw.Week_Number = w.Last_week_Number
谁能建议我在这里做错了什么?看来这应该是可以实现的。
【问题讨论】:
-
我认为最后一行应该是
and s_lw.Week_Number = w.Last_week_Number。正如你现在所拥有的,s.Week_Number 必须同时等于两个星期数。不过,我认为这不能解释您的错误消息。 -
是的,你说的很对。没有正确复制过来,谢谢指出
-
您的上述查询是否用于为您的报告创建表格?如果是这样,请务必记住“SELECT”列表中的第一个列默认为
primary index。如果此列中的值大多不是唯一的,那么您可能会遇到像您遇到的假脱机空间错误。 -
不,我只是用它来返回数据。我尝试使用临时表设置等效查询并且运行良好,因此这与 Sales 表有关。销售表实际上是一个视图,但我不应该认为这会阻止这项工作。也许我只好另辟蹊径,这很烦人