客户在他们的数据的快捷方式,其中它们具有在一个字段记录一个的量。当我分析他们,我需要制造记录,每一个量,7天递增“标识符”(因为数字表示日期搜索结果,例如:一个单品在售四周我需要四个记录,而每星期一个产品。

[事件号] [分类] [周运行] [一些数据] 结果 2009 11 29 00 1 1 运行1周结果 2009 12 06 00 2 1 运行1周结果 2009 12 13 00 1 4 运行4周结果 2009 12 20 00 2 4 运行4周结果

不知何故,我需要打开这个数据与一视图(SQL SELECT)以下(都在同一个表中,包括白色空间看部分:

[事件编号+分类] [一些数据] 结果 2009 11 29 01 运行一周一周从而一个记录。结果 2009 12 06 02 运行一周搜索结果 2009 12 13 01 运行持续四周由7结果,重复4次递增日期 2009 12 20 01 运行持续四周结果 2009 12 27 01 运行持续四周结果 2009 01 03 01 运行持续四周搜索结果 2009 12 20 02 运行持续四周由7结果,重复4次递增日期 2009 12 27 02 运行持续四周结果 2009 01 03 02 运行持续四周结果 2009 01 10 02 运行持续四周结果

我的想法是有某种支点交叉的应用SQL代码?

有帮助吗?

解决方案

我要给你一个便宜的答案。您可以使用“预渲染” Weeks表创建一个基于查询的循环。您将需要投入足够的周成它涵盖您的预计场景范围。

[Week]
1
2
3
4

然后你加入上[Weeks Running]查询该表,使用不平等OriginalTable.WeeksRunning <= Weeks.Week。你结束了每周一排。

您加入Weeks.Week * 7天嵌在你的事件数的日期推断日期。

其他提示

这是一些可能会更简单,以应用端,而不是数据库方面的事,但我给它一个镜头...这需要一个数据库支持的CTE,我不正好有手,所以这是未经测试。

WITH RECURSIVE expandedTable(eventNumber, classification, index, count, someData)
AS (
    SELECT eventNumber, classification, 1, weeksRunning, someData
    FROM originalTable
    WHERE weeksRunning > 0
  UNION ALL
    SELECT eventNumber + 7, classification, index + 1, count, someData
    FROM expandedTable
    WHERE index < count
)
SELECT eventNumber, classification, someData
FROM expandedTable;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top