有没有一种方法可以循环通过一个逐行查找的sql表进行计算?

问题描述

这里是第一次海报,也是自学成才的SQLer,所以我知道我很烂(我只需要工作即可)

基本上,我正在尝试编写一个查询,该查询基于“丢失”的行将行插入表中。

下面有一些代码,请注意,当我有(n)时,这就是我要填写行号的位置。例如,在第7行中,我希望它从中减去第2行的日期第1行。如果该日期差大于4,请进行减法运算并除以3,以找出我必须插入的零行数。然后,一旦我确定要插入多少行,请插入空值,然后每次都减去3个月以得到正确的日期。完成后,检查第2行和第3行之间的差异。

所以这是temp_rdq:

adate   rdq
2020-06-30  2020-08-10
2020-03-31  2020-05-26
2019-09-30  2019-11-27
2019-06-30  2019-08-13
2018-12-31  2019-07-18

您看到第2行和第3行之间的rdq之间有6个月的差距吗? 我想编写一个查询,以识别其中有6个月的间隔,并插入“ null”行,如下所示: 约会rdq 2020-02-27空 如果有9个月的间隔,请插入2行,其中日期遵循3个月的模式

declare @tmpRowCount int
    set @tmpRowCount=(SELECT count(*) from #temp_RDQ);
    declare @n  int 
    set @n=1
While (@n<=@tmpRowCount)
BEGIN
if datediff(month,#temp_rdq.rdq(n+1),#temp_rdq.rdq(n))>4
set @inserts= FLOOR( datediff(month,#temp_rdq.rdq(n)/3));
    while (@inserts>0)
      BEGIN
    WITH K AS(
        SELECT 
            ROW_NUMBER() OVER (ORDER BY adate desc) row_num,adate,rdq
        FROM #temp_rdq)
    
           insert into #temp_RDQ (adate,rdq)
           SELECT DATEADD(month,-3*@inserts,#temp_rdq.rdq(n)),NULL 
           FROM K
           WHERE row_num =@n
           SET @inserts=@inserts-1;
      END
      SET @n=@n+1
END

任何帮助将不胜感激! 我已经尝试过使用LEAD函数,但是我仍然需要指定我正在谈论的特定行,以便知道要插入多少个空行。

与此相关的一个难题是,最后,我需要能够输入一个数字,这样它将使我的收入日期早于7行。就像这样:

WITH t AS(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY adate desc) row_num,rdq
    FROM #temp_rdq)
SELECT 
  adate,rdq 
FROM 
    t
WHERE 
    row_num =@variable_to_be_input_later

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...