我有一个表_A,它的名称和交货日期如下所示
| 名称名称名称|删除(_D)|
| - -|- -|
| 标记|2022年4月1日|
| 标记|2022年4月3日|
| 标记|2022年4月5日|
| 标记|2022年4月7日|
| 标记|2022年4月9日|
| 戴夫|2022年4月2日|
| 戴夫|2022年4月4日|
| 戴夫|2022年4月6日|
| 戴夫|2022年4月8日|
| 戴夫|2022年4月10日|
等等。我想要一个到特定日期为止的名称的累积计数。例如,从2022-04-07到2022-04-10的输出样本
| 日期|名称名称名称|剪切计数|
| - -|- -|- -|
| 2022年4月7日|标记|四个|
| 2022年4月8日|标记|四个|
| 2022年4月9日|标记|五个|
| 2022年4月10日|标记|五个|
| 2022年4月7日|戴夫|三个|
| 2022年4月8日|戴夫|四个|
| 2022年4月9日|戴夫|四个|
| 2022年4月10日|戴夫|五个|
Ofc的日期可以是不同名称的公共。我正在尝试使用动态SQL(因为我是一个初学者,并希望探索更多)。我已经生成了以下代码的基础上,我可以找到关于动态SQL方法。我也开放其他方法太多。
begin
declare cur_date date;
declare og_date date;
declare Cust_Name varchar2(4);
declare cul_cnt number;
set cur_date = current_date; /*today's date*/
set og_date = cur_date - 10; /*calculating cumulative counts for last 10 days*/
loop
select Name,count(Name) into Cust_Name,cul_cnt,og_date
from table_A
where prod_type like 'SHOES' /*Another column in the table just for filter*/
and Del_dt <= og_date
group by Name;
og_date = og_date + 1;
exit when (og_date > cur_date);
end;
end;
目前我收到此错误
Error report -
Error starting at line : 1 in command -
DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=CUR_DATE;SECTION, DRIVER=3.69.49
但是,我确信代码中会有更多的错误。如何才能获得Output表中显示的所需输出?还有,如何才能获得og_date(输出中的Date列),因为它不在原始表_A中,而是一个定义的变量
1条答案
按热度按时间laawzig21#
试试看:
如果取消注解掉的块的注解,则可以按原样运行该语句。在这种情况下,结果与您的结果相同:
| 数据传输|名称|累积计数|
| - -|- -|- -|
| 2022年4月7日|标记|四个|
| 2022年4月8日|标记|四个|
| 2022年4月9日|标记|五个|
| 2022年4月10日|标记|五个|
| 2022年4月7日|戴夫|三个|
| 2022年4月8日|戴夫|四个|
| 2022年4月9日|戴夫|四个|
| 2022年4月10日|戴夫|五个|
Oracle中的相同查询: