首页 > 解决方案 > SQL 计数器循环

问题描述

来自 Python/R 但对 SQL 不熟悉...

有没有办法在 SQL 循环中使用“计数器”?

例如,如何在 SQL 中模仿以下简单的 Python for 循环:

counter = 7
For i in range(1,conter+1):
    some_function_that_takes_i_as_argument
    counter +=1

我正在尝试在 SQL 查询中替换数值“i”(在一个范围内)!

标签: pythonsqloracle

解决方案


使用 SQL,您需要开发一种不同的思维方式 - 不是程序性的,而是您希望获得的集合是什么?从您的语句 SELECT * FROM tableA WHERE date > SYSDATE - i"。在他的情况下,您似乎只需要最近 8 天(今天和 7 天前)的数据。使用 SQL,这只是一个语句(不需要循环):

select * 
  from table_a 
where date >= trunc(sysdate – 7)
 order by date desc;

注意:以上用户“日期”作为列名。这是一个极差的选择,因为日期 和 Oracle 数据类型以及Oracle 和 SQL 标准保留字
该查询使用该trunc函数,因为 Oracle日期数据类型始终包含时间。


推荐阅读