【发布时间】:2015-02-04 01:13:26
【问题描述】:
感谢您寻求帮助。我有一张这样的桌子。让我们称之为TableA
[Id] [CHAR](10) NOT NULL,
[DType] [SMALLINT] NOT NULL,
[PType] [CHAR](1) NOT NULL,
[Period] [INT] NOT NULL,
[FromDate] [SMALLDATETIME] NOT NULL,
[ToDate] [SMALLDATETIME] NOT NULL,
[Highval] [DECIMAL](19, 4) NULL,
主键是Id, DType, PType, Period, FromDate
里面有这样的数据:
Id DType PType Period FromDate ToDate Highval
-------------------------------------------------------------------
000000000G 1 A 2015 2014-11-02 2014-11-04 0.4800
000000000G 1 A 2015 2014-11-01 2014-11-01 1.2860
000000000G 1 A 2015 2014-10-28 2014-10-31 1.2290
000000000K 4 2 2015 2014-12-17 2014-12-20 2.5800
000000000K 4 3 2015 2014-12-15 2014-12-16 2.1700
000000000K 4 3 2015 2014-11-14 2014-12-14 2.7200
我需要一种方法来拆分日期范围,即大于或等于 FromDate 且小于或等于 ToDate 的任何时间,我需要将它们拆分为另一个名为 IndividualDate 的列到同一个表中。基本上,在给定的日期范围内,如果日期存在于FromDate 和ToDate 之间,则将日期写入另一个名为IndividualDate 的列中。对于给定的Id、DType、PType、PEnd、FromDate,FromDate 和 ToDate 字段日期范围没有重复项。因此,日期范围完全分开。上述示例数据的最终输出表(临时表可以)如下所示。
Id DType PType Period FromDate ToDate Highval IndividualDate
----------------------------------------------------------------------------------
000000000G 1 A 2015 2014-11-02 2014-11-04 0.4800 2014-11-02
000000000G 1 A 2015 2014-11-02 2014-11-04 0.4800 2014-11-03
000000000G 1 A 2015 2014-11-02 2014-11-04 0.4800 2014-11-04
000000000G 1 A 2015 2014-11-01 2014-11-01 1.2860 2014-11-01
000000000G 1 A 2015 2014-10-28 2014-10-31 1.2290 2014-10-28
000000000G 1 A 2015 2014-10-28 2014-10-31 1.2290 2014-10-29
000000000G 1 A 2015 2014-10-28 2014-10-31 1.2290 2014-10-30
000000000G 1 A 2015 2014-10-28 2014-10-31 1.2290 2014-10-31
000000000K 4 2 2015 2014-12-17 2014-12-20 2.5800 2014-12-17
000000000K 4 2 2015 2014-12-17 2014-12-20 2.5800 2014-12-18
000000000K 4 2 2015 2014-12-17 2014-12-20 2.5800 2014-12-19
000000000K 4 2 2015 2014-12-17 2014-12-20 2.5800 2014-12-20
000000000K 4 3 2015 2014-12-15 2014-12-16 2.1700 2014-12-15
000000000K 4 3 2015 2014-12-15 2014-12-16 2.1700 2014-12-16
000000000K 4 3 2015 2014-11-14 2014-12-14 2.7200 2014-12-14
任何建议将不胜感激。提前谢谢你。
【问题讨论】:
-
我还应该提到,决赛桌可能有几百万条记录。所以,它需要扩展。
标签: sql sql-server tsql