2013-04-02 150 views
0

我必须复制周级数据中的记录并将其推回,以便在前一周填充数据。因此,我得到一个星期六1/6的行,然后填写所有列以获得除日期之前的相同数据,直到1/1(星期日)。复制日期范围内的记录

所以我的来源是 日期,信息 1/6,一个

的目标应该是 1/7,B | 1/6,a | 1/5,a | 1/4,a | 1/3,a | 1/2,a | 1/1,a

**抱歉的格式,无法让它正确显示。

到目前为止,我还以为要做到这一点的最佳方式,通过使用一些工会承滴盘

SELECT date, info FROM test 
UNION ALL 
SELECT date - 1, info FROM test 
UNION ALL 
SELECT date - 2, info FROM test 

ECT要么。

,或者做一些控制笛卡儿连接

SELECT tmp_date AS date, info FROM test AS test 
INNER JOIN date_temp_table AS dt 
    ON dt.tmp_date <= test.date 
    AND dt.tmp_date > test.date - 7 

现在,上述两种方法但是工作,他们都非常低效的,几乎杀了我的数据库(Teradata数据)这样的IM开放给任何想法,如何改进这个。

+0

由于'date'是一个保留字,我猜这只是一个例子,对吗? – BellevueBob

回答

0

很难理解你真正想要的,但在TD13.10很容易根据使用扩大时期复制行:

SELECT 
    BEGIN(pd) AS dt, 
    info 
FROM test 
EXPAND ON PERIOD(datecol-7, datecol) AS pd 

迪特

相关问题