将帐户日期列表透视到缺少日期的帐户开始日期和结束日期

     2023-03-31     101

关键词:

【中文标题】将帐户日期列表透视到缺少日期的帐户开始日期和结束日期【英文标题】:Pivot account date list to account start and end dates with missing dates 【发布时间】:2019-07-03 15:11:51 【问题描述】:

我需要转换帐户活动日期列表,以提供每个日期序列的活动开始日期和结束日期以及日期之间的天数。例如,这是两个帐户的活动日期列表。

这是显示日期序列开始和结束以及这些日期之间的天数的必需结果集。

但是,如何真正做到这一点一直是个谜。以前有人做过吗?

这是一些带有示例数据的代码。

If Object_Id('dbo.account_active') Is Not Null

删除表 dbo.account_active;

创建表 dbo.account_active( account_active_id int 身份(1,1), account_id 整数, active_date 日期);

插入到 dbo.account_active( 帐户ID, 活动日期) 价值观 (1,'2019-01-01'), (1,'2019-01-02'), (1,'2019-01-03'), (1,'2019-01-06'), (1,'2019-01-07'), (1,'2019-01-08'), (1,'2019-01-09'), (1,'2019-01-10'), (1,'2019-01-11'), (1,'2019-01-28'), (1,'2019-01-29'), (1,'2019-01-30'), (1,'2019-01-31'), (2,'2019-01-16'), (2,'2019-01-25'), (2,'2019-01-26');

选择 aa.account_id, aa.active_date 从 dbo.account_active 作为aa;

【问题讨论】:

【参考方案1】:

这是一个差距和岛屿问题

也许这会有所帮助。

示例

Select Account_ID
      ,Active_Date_Start = min(Active_Date)
      ,Active_Date_End   = max(Active_Date)
      ,Days_Active       = DateDiff(DAY,min(Active_Date),max(Active_Date))+1
 From  (
        Select *
              ,Grp = DateDiff(DAY,'1900-01-01',active_date)
                     - Dense_Rank() over (Partition By Account_id Order by Active_Date)
         From  account_active
       ) A
 Group By Account_id,Grp
 Order by Account_id,min(Active_Date)

退货

Account_ID  Active_Date_Start   Active_Date_End Days_Active
1           2019-01-01          2019-01-03          3
1           2019-01-06          2019-01-11          6
1           2019-01-28          2019-01-31          4
2           2019-01-16          2019-01-16          1
2           2019-01-25          2019-01-26          2

【讨论】:

那行得通,尤其是在 LAG 不可用的旧环境中。非常感谢。 @user2466387 乐于助人 我开始使用大型数据集进行测试,发现当 account_id 有重复的 active_dates 时,上述方法不起作用。我会尽快发布我发现的解决方案。 要求不算数。只是日期之间的日子。我更新了原始帖子以更准确地反映这一点。

查找在 SQL Server 2014 中拥有多个帐户的客户的真正开始结束日期

】查找在SQLServer2014中拥有多个帐户的客户的真正开始结束日期【英文标题】:FindthetruestartenddatesforcustomersthathavemultipleaccountsinSQLServer2014【发布时间】:2020-01-2720:27:29【问题描述】:我有一个支票账户表,其中包含Cust_id(客户ID... 查看详情

如何生成列表而忽略日期不符合我要查找的范围的记录?(代码片段)

我正在使用MicrosoftSQLServer,我目前有一个包含帐户记录的表。这些主帐户可以有多个链接到它们的子帐户。例如,主帐户XXX可以具有子帐户XXXA和XXXB以及......XXXN,依此类推。这些子帐户可以随时间打开并添加到主帐户XXX,因此可... 查看详情

如何将字符串日期范围更改为开始和结束日期?

】如何将字符串日期范围更改为开始和结束日期?【英文标题】:Howtochangestringdaterangetostartandenddate?【发布时间】:2019-12-1108:25:17【问题描述】:我正在尝试将字符串日期范围(例如7月1日至30日)分隔为作为日期时间的开始日期... 查看详情

pandas-更改重新采样时间序列的开始和结束日期

】pandas-更改重新采样时间序列的开始和结束日期【英文标题】:pandas-changingthestartandenddateofresampledtimeseries【发布时间】:2018-02-0501:59:12【问题描述】:我有一个时间序列,我重新采样到这个数据帧df,我的数据是从6月6日到6月28... 查看详情

添加缺失的报告日期,不包括具有指定值的周末

...缺少报告日期)。我想通过将缺少的报告日期添加到每个帐户(由ID表示)来修复数据。例如,我们将开始日期设置为2014-07-01,将结束日期设置为2018-03-13。总共有970 查看详情

如何获取帐户在两个日期之间进行的转发列表?

】如何获取帐户在两个日期之间进行的转发列表?【英文标题】:HowcanIgetalistoftheretweetsanaccountdidbetweentwodates?【发布时间】:2017-11-2223:46:06【问题描述】:有没有办法列出Twitter帐户在两个日期之间所做的转推?我需要列出从13-11-... 查看详情

java日期排序

将List类型数据排序,list中包开始日期periodFrom,结束日期periodTo,日期格式例:开始日期1:2018年3月18日,结束日期1:2018年3月22日开始日期1:2018年3月20日,结束日期1:2018年3月25日开始日期1:2018年3月13日,结束日期1:2018年3月20日开始日期1:2018年... 查看详情

如何在 MSSQL 中获取最近 6 周的开始日期和结束日期

】如何在MSSQL中获取最近6周的开始日期和结束日期【英文标题】:howtogetlast6weekstartdateandenddateinMSSQL【发布时间】:2021-02-1808:05:22【问题描述】:例如,今天是2021年2月18日,那么开始日期是2021年2月14日,结束日期是2021年2月20日... 查看详情

需要在具有开始和结束日期的选定日期之间按天计算活跃客户列表(也为空)

】需要在具有开始和结束日期的选定日期之间按天计算活跃客户列表(也为空)【英文标题】:needactivecustomerlistbydaywisebetweenselecteddateswhichhavestartandenddate(nullalso)【发布时间】:2018-10-0807:38:20【问题描述】:我们需要第1天和第2天... 查看详情

返回任何一年的开始和结束[重复]

...:我需要两个或一个(输出)C#方法,该方法将采用任何日期时间并返回该年的开始日期和该年的结束日期。【问题讨论】:一年的开始日期是什么意思?永远是1月1日和12月31日,对吧?开始日期是1月1日,结束日期是12月31日。... 查看详情

动态计算截至该日期的财政年度结束和周数

】动态计算截至该日期的财政年度结束和周数【英文标题】:Dynamicallycalculateendoffiscalyear(s)andweekstothatdate【发布时间】:2017-10-1709:48:47【问题描述】:我正在计算如果员工从年中开始工作到当前财政年度结束(4月1日至3月31日)... 查看详情

聚合日期列表以开始和结束日期

】聚合日期列表以开始和结束日期【英文标题】:Aggregatingalistofdatestostartandenddate【发布时间】:2010-06-0805:23:40【问题描述】:我有一个日期和ID列表,我想在每个ID中将它们汇总成连续的日期段。对于名为“data”的表中包含“tes... 查看详情

netezza 中的周末日期

】netezza中的周末日期【英文标题】:WeekendDateinnetezza【发布时间】:2016-01-2517:40:42【问题描述】:我在Netezza中寻找星期的开始和结束日期,但我的星期从星期一开始到星期日结束日期周开始日期周结束日期2015年11月30日2015年11月... 查看详情

Swift:将开始和结束日期格式化为单个字符串

】Swift:将开始和结束日期格式化为单个字符串【英文标题】:Swift:Formataastartandenddateintoasinglestring【发布时间】:2018-06-1220:24:12【问题描述】:我有这两个字符串格式的日期:letstartDate="2018-06-14"letendDate="2018-06-17"我想将它们一起... 查看详情

SQL 按键重复开始和结束日期

】SQL按键重复开始和结束日期【英文标题】:SQLrecurringstartandenddatesbykey【发布时间】:2018-06-1821:04:42【问题描述】:(SQLServer2016)给定一个键和日期范围,如下所述:关键日期2018年1月1日b2018年1月1日2018年1月2日b2018年1月2日2018... 查看详情

MySQL - 如何查找日期在开始日期到结束日期之间的记录

】MySQL-如何查找日期在开始日期到结束日期之间的记录【英文标题】:MySQL-Howtofindrecordswhichdateisbetweenstartdatetoenddate【发布时间】:2015-10-3117:17:01【问题描述】:我有两个表并试图查找start_date和end_date之间的记录。广告系列表campa... 查看详情

如何将开始日期和结束日期与其他开始日期和结束日期分开?

】如何将开始日期和结束日期与其他开始日期和结束日期分开?【英文标题】:HowdoIsplitstartandenddateswithotherstartandenddates?【发布时间】:2022-01-2323:55:08【问题描述】:我在下面编写了两个查询,结果类似于:表:company_changesuser_id... 查看详情

MySQL:开始日期和结束日期之间的日期的 IN 子句?

】MySQL:开始日期和结束日期之间的日期的IN子句?【英文标题】:MySQL:INclausefordatesBETWEENastartandenddate?【发布时间】:2011-11-0419:56:40【问题描述】:我有YYYY-MM格式的日期列表,并且我有一个包含starts_at和ends_at列的记录表。我想... 查看详情