【发布时间】:2021-12-03 21:59:06
【问题描述】:
我有这个问题
select
Suc,
SKU,
TipoMov,
Prov,
sum(Uni) as Uni, sum(Imp_Vta) as Imp_Vta
into #Mov
from dual where (Mes between 22009 and 22105)
and Suc = 11
and TipoMov in (4,5,8)
and Id_Fec_Diaria between '2020-09-28' and '2021-05-17'
group by
Suc, SKU, TipoMov, Prov
我正在尝试在两个日期之间做一个 while 循环 到目前为止,我有这个,但有一个错误我无法修复或理解。
declare
@FechaMin DATE='2020-09-28',
@FechaMax DATE='2021-05-17';
while (@FechaMin >= @FechaMax)
begin
select
suc,
SKU,
TipoMov,
Prov,
sum(Uni) as Uni,
sum(Imp_Vta) as Imp_Vta
into #Mov
from dual
where (Mes between 22009 and 22105) and
Suc = 11 and
TipoMov in (4,5,8) and
Id_Fec_Diaria >= @FechaMin and Id_Fec_Diaria< @FechaMax
group by
suc,
SKU,
TipoMov,
prov) END
感谢您的帮助。
【问题讨论】:
-
你的while循环什么时候结束?您如何确保它不会永远运行?
-
你为什么要使用
WHILE? SQL 是一种基于集合的语言,您最不想使用的是迭代解决方案。 -
你不能在这样的循环中使用
select ... into。该语句创建表#Mov,因此在下一次迭代中您将收到错误,因为该表已存在。 -
另外,SQL Server 2008 已经完全不受支持超过 2 年了;很久以前就已经对您的升级路径进行了排序。
-
选择
from dual,确定不是Oracle?
标签: sql tsql for-loop sql-server-2008 while-loop