需要查询而不交叉连接

时间:2014-09-28 04:35:02

标签: netezza

我有一张在日常级别销售的表

sales_day

loc_id  day_id      sales
124     2013-01-01  100
124     2013-01-02  120
124     2013-01-03  140
124     2013-01-04  160
124     2013-01-05  180
124     2013-01-06  200
124     2013-01-07  220

有每周表,它是所有日子的总和 loc_id week_id sales 123 201401 1120

现在我需要以上所有表格,如下所示

loc_id  day_id      sales  week_sales
124     2013-01-01  100   1120
124     2013-01-02  120   1120
124     2013-01-03  140   1120
124     2013-01-04  160   1120
124     2013-01-05  180   1120
124     2013-01-06  200   1120
124     2013-01-07  220   1120

有太多的骚动,这么多周,几天。 如何在没有交叉连接的情况下准确获取数据。

2 个答案:

答案 0 :(得分:0)

你试过这个:

select loc_id, day_id, sales, week_sales
from table
cross join (
    select sum(sales) as week_sales from table
) t 

答案 1 :(得分:0)

窗口分析功能应该可以帮到你......

select loc_id, 
       day_id, 
       sales, 
       sum(sales) over(partition by loc_id,date_part('week', day_id)) as week_total_sales
from   <table name>

它会按地点ID和一年中的一周对销售额求和,以便为您提供所需的总数。

在您的示例中,2013-01-07包含在其他日期中,但实际上并不是同一日历周的一部分。

目前尚不清楚您指的是哪个DBMS。以上是Netezza。对于SQL Server等,尝试将date_part('week',day_id)更改为datepart(ww,day_id)。