首页 > 解决方案 > Snowflake While 循环继续 sql 直到 @Counter 达到 365

问题描述

我试图让我的代码在达到某个数字时停止计数,但我一直收到一个错误,即在 Declare 之后我不能有 select 语句。

DECLARE @Counter INT 
SET @Counter=1
WHILE ( @Counter <= 365)
BEGIN
    
select Geography
, concat('Latest_Week_End ',current_date - @Counter) as WE_DATE
,concat(Department_ID,' ',Department_NM)
,Group_NM
,concat(category_ID,' ',category_nm)
,Sum(Dollar_sales)
,Sum(dollar_Sales_ya)
,Sum(unit_sales)
,sum(unit_sales_ya)
,sum(rom_dollars)
,sum(rom_dollars_ya)
,sum(rom_units)
,sum(rom_units_ya) from TEMP_TABLES.MR_OMNIDASH_IRI_SHARE
where geography like '%PORTLAND%'
and WE_Date in (current_date - @Counter)
group by 1,2,3,4,5
SET @Counter  = @Counter  + 7
END

标签: sqlwhile-loopcountersnowflake-cloud-data-platform

解决方案


你能尝试不同的方法吗?

select  current_date() - seq4()*7 from table(generator(rowcount => 52))

返回去年最后 52 周的结束日期。

在此处输入图像描述

您的线路:

and WE_Date in (current_date - @Counter)

可以换成

and WE_Date in (select  current_date() - seq4()*7 from table(generator(rowcount => 52)))

一切都应该很好?


推荐阅读