gpt4 book ai didi

sql - 疯狂的 SQL 问题 : How to do a sort of cross apply with a pivot?

转载 作者:行者123 更新时间:2023-12-04 08:30:31 24 4
gpt4 key购买 nike

客户在他们的数据中有快捷方式,他们有 记录数量 在一个领域。当我解析它们时,我需要制造记录,每个数量一个,将“标识符”增加 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
运行四个星期

不知何故,我需要使用 View (sql select)将此数据转换为以下内容(全部在同一个表中,包含空格以查看部分:

【事件编号+分类】
[一些数据]
2009 11 29 01
运行一周 一周因此一项记录。
2009 12 06 02
运行一周
2009 12 13 01
运行 4 周 重复 4 次,将日期增加 7
2009 12 20 01
运行四个星期
2009 12 27 01
运行四个星期
2009 01 03 01
运行四个星期
2009 12 20 02
运行 4 周 重复 4 次,将日期增加 7
2009 12 27 02
运行四个星期
2009 01 03 02
运行四个星期
2009 01 10 02
运行四个星期

我的想法是有某种枢轴交叉应用 sql 代码?

最佳答案

这在应用程序端而不是数据库端可能更简单,但我会试一试......这需要一个支持 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;

关于sql - 疯狂的 SQL 问题 : How to do a sort of cross apply with a pivot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com