首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Group Wise数据填充

Group Wise数据填充
EN

Stack Overflow用户
提问于 2019-06-05 17:11:00
回答 1查看 40关注 0票数 1

我在报表中工作,希望在集团内不只显示一次订单。

我尝试过使用循环并将值赋给temp变量,然后比较

代码语言:javascript
复制
declare
l_cnt number;
cursor c1 is select * from zz_employees;
begin
dbms_output.put_line ('Order |-' || 'Material | -' || 'Salesperson |');
for i in c1
loop
  l_cnt := i.ordernumber;
  if l_cnt = i.ordernumber then 
        --dbms_output.put_line (l_cnt);
         dbms_output.put_line (l_cnt || '-' || i.materialno || '-' || i.salesperson);
  else
  dbms_output.put_line (i.ordernumber || '-' || i.materialno || '-' || i.salesperson);
  end if;
end loop;
end;

当前表数据:-

代码语言:javascript
复制
1001    9000001 James
1001    9000002 Tom
1001    9000003 Harry
1002    9000004 Voret
1002    9000005 Kzahunar
1003    9000006 Zari
1004    9000007 Neblas
1004    9000008 Anthony

预期结果

代码语言:javascript
复制
1001    9000001 James
        9000002 Tom
        9000003 Harry
1002    9000004 Voret
        9000005 Kzahunar
1003    9000006 Zari
1004    9000007 Neblas
        9000008 Anthony
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 17:18:32

无论如何,当你打印这个值时,你必须稍微改变一下你的循环:

代码语言:javascript
复制
loop
  if l_cnt = i.ordernumber then 
    dbms_output.put_line ('    -' || i.materialno || '-' || i.salesperson);
  else
    dbms_output.put_line (i.ordernumber || '-' || i.materialno || '-' || i.salesperson);
    l_cnt := i.ordernumber;
  end if;
end loop;

或者,您可以在查询中直接省略这些值:

代码语言:javascript
复制
SELECT CASE WHEN ordernumber  = MAX(ordernumber) over (ORDER BY ROWNUM 
                                                 ROWS BETWEEN 1 preceding AND 1 preceding) 
            THEN NULL 
            ELSE ordernumber  
       END ordernumber 
     , materialno 
     , salesperson
  FROM zz_employees
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56457477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档