疯狂的SQL问题:如何使用枢轴进行交叉应用?

疯狂的SQL问题:如何使用枢轴进行交叉应用?,sql,pivot,cross-apply,Sql,Pivot,Cross Apply,客户在其数据中有快捷方式,在这些快捷方式中,他们在一个字段中有大量记录。当我解析它们时,我需要制作记录,每个数量一个,将标识符增加7天,因为数字代表一个日期。例如:一个产品销售四周,我需要四个记录,每周一个产品 [活动编号] [分类] [连续几周] [一些数据] 2009 11 29 00 1. 1. 跑步一周 2009 12 06 00 2. 1. 跑步一周 2009 12 13 00 1. 4. 运行四周 2009 12 20 00 2. 4. 运行四周 不知何故,我需要在同一个表中使用视图

客户在其数据中有快捷方式,在这些快捷方式中,他们在一个字段中有大量记录。当我解析它们时,我需要制作记录,每个数量一个,将标识符增加7天,因为数字代表一个日期。例如:一个产品销售四周,我需要四个记录,每周一个产品

[活动编号] [分类] [连续几周] [一些数据] 2009 11 29 00 1. 1. 跑步一周 2009 12 06 00 2. 1. 跑步一周 2009 12 13 00 1. 4. 运行四周 2009 12 20 00 2. 4. 运行四周

不知何故,我需要在同一个表中使用视图sql select all将这些数据转换为以下内容,其中包含空格以查看部分:

[活动编号+分类] [一些数据] 2009 11 29 01 运行一周一周,因此记录一次。 2009 12 06 02 跑步一周 2009 12 13 01 运行四周,重复4次,将日期递增7 2009 12 20 01 跑步四周 2009 12 27 01 跑步四周 2009 01 03 01 跑步四周 2009 12 20 02 运行四周,重复4次,将日期递增7 2009 12 27 02 跑步四周 2009 01 03 02 跑步四周 2009 01 10 02 跑步四周


我的想法是使用某种pivot交叉应用sql代码?

我有一个便宜的答案给你。使用预渲染的Weeks表创建基于查询的循环。你需要投入足够的时间来完成你预期的场景范围

[Week]
1
2
3
4

然后使用Inquality Originatable.WeeksRunning将[Weeks Running]上的查询加入到这个表中,这在应用程序端可能比在数据库端更简单,但我会尝试一下。。。这需要一个支持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;

我只想+1的格式…啊,我喜欢SQL,但我讨厌SQL。这是如此真实,这是更好地做应用程序端。当您试图完成一些不属于SQL的东西时,您必须向后弯腰,并且通常会导致可读性较差的查询。对于这个特殊的问题,我看不到一个优雅的基于SQL的解决方案。