如何循环 SQL 查询、使用查询中的变量并写入 Microsoft Access 中的表

问题描述

我有我在 SSMS 中运行的 sql 代码,它利用一个查询和两个日期变量来检查表中的月度变化。查询的第一部分使用 @month1 作为 WHERE 语句中的日期变量,查询的第二部分使用 @month2。

声明 @month1 INT = 0 @month2 INT = 1

每次在我的 WHILE 循环中运行查询时,使用 SET 命令将变量增加 1: SET @month1 = @month1 + 1 SET @month2 = @month2 + 1

因此,本质上,该查询会检查 1 月到 2 月的数据。循环发生并且查询检查二月数据到三月数据……依此类推,直到达到预定义的计数器变量值并退出循环。在循环中,我将记录附加到临时表中。

代码在 SSMS 中完美运行,但是,我想在 Microsoft Access 中使用它,以便其他非 SSMS 用户可以执行。到目前为止,我还没有找到任何例子。是否需要一个函数,或者 Access 可以使用我保存的 sql 脚本吗?任何帮助或指导将不胜感激!

更新:这里是循环代码示例,仅供参考。

DECLARE
@month1 INT = 0,@month2 INT = 1,@effdate DATETIME = '01/15/2021'  

`` # of Loop iterations
WHILE @month1 <= 8  
BEGIN

`` Find moves from a specific plan type to another plan type
INSERT INTO #PlanChanges
        ([blah],[blah],[Change_Type],[Change_Period],[MonthNum])

Select [blah],CONVERT(NVARCHAR(20),'LOSS OF PLAN'),DATENAME(MONTH,Plan2.EFF_DT)  + ' ' + DATENAME(YEAR,Plan2.EFF_DT),DATEPART(Month,Plan2.EFF_DT)
    
From  (Select *
       From MONTHLY_MEMBERSHIP TABLE
       Where PLAN_ID = '714'
       AND EFF_DT = CONVERT(DATETIME,CONVERT(VARCHAR,DATEPART(MONTH,DATEADD(MONTH,@month1,@effdate)),101) + '/15/' + 
       CONVERT(VARCHAR,DATEPART(YEAR,101) )) AS Plan1

Inner Join  (Select *
             From MONTHLY_MEMBERSHIP TABLE
             Where (PLAN_ID >='700' AND EFF_DT = CONVERT(DATETIME,@month2,101) + '/15/' + CONVERT(VARCHAR,101) ))
             AND PLAN_ID <> '714') AS Plan2

    ON  Plan1.MEM_ID = Plan2.MEM_ID

`` change the loop conditions
SET @month1 = @month1 + 1
SET @month2 = @month2 + 1
    
END

解决方法

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

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

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