gpt4 book ai didi

sql - 如何在 SQL Server 2000 中生成一个填充有日期的临时表?

转载 作者:行者123 更新时间:2023-12-04 01:16:58 24 4
gpt4 key购买 nike

我需要制作一个包含日期范围的临时表,以及几个包含占位符值 (0) 的列以供将来使用。我需要的日期是 $startDate 和 $endDate 之间每个月的第一天,其中这些变量可能相隔数年。

我原来的 sql 语句是这样的:

select dbo.FirstOfMonth(InsertDate) as Month, 0 as Trials, 0 as Sales
into #dates
from customer
group by dbo.FirstOfMonth(InsertDate)

“FirstOfMonth”是一个用户定义的函数,我所做的几乎完全按照它所说的那样,返回提供日期的月份的第一天,时间正好是午夜。

这几乎完全符合我的需要,直到我发现我的日期偶尔会有几个月的空白,因为没有记录插入日期。由于我的结果必须仍然缺少几个月,我需要一种不同的方法。

我已将以下声明添加到存储过程中,以预期他们需要我需要的日期范围...
declare $startDate set $startDate = select min(InsertDate) from customer
declare $endDate set $endDate = select max(InsertDate) from customer

...但我不知道从这里做什么。

我知道这个问题是 similar to this question但是,坦率地说,这个答案超出了我的想象(我不经常使用 SQL,而且当我使用 SQL Server 时,它往往是在旧版本的 SQL Server 上),并且有一些细微的差异让我感到厌烦。

最佳答案

SELECT  P.Id
, DATEADD ( DD, -P.Id, P.Date ) AS Date
FROM (SELECT TOP 1000 ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) AS Id, CAST(GETDATE () AS DATE) AS Date FROM master.dbo.spt_values) AS P
此查询返回最近 1000 天左右的表日历。它可以放在临时表或其他表中。

关于sql - 如何在 SQL Server 2000 中生成一个填充有日期的临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6125504/

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