oracle 导航卫星结果回车

hyrbngr7  于 2023-03-17  发布在  Oracle
关注(0)|答案(1)|浏览(120)

我正在使用Navicat对数据库进行查询,并使用ORDER BY CASE按特定顺序打印结果。我想在每个结果之间插入一个回车,但我找不到任何有关如何操作的信息。理想情况下,我希望返回一条记录,一行空白单元格,然后在该行下面打印下一条记录。
任何帮助都将不胜感激。

mrfwxfqh

mrfwxfqh1#

可能和许多其他社区成员一样,我不使用Navicat。我在谷歌上搜索过它--看起来像我见过的GUI工具(SQL Developer,TOAD),有很好的特性。我怀疑它是否有能力做你想做的事情。
您没有说明您打算如何处理这样的输出--是否将其假脱机到(CSV?)文件中?如果是这样,有一个解决方案:我使用SQL*Plus,它的SET RECSEP设置完全可以做到这一点,而不需要任何努力。
这是默认值:

SQL> select * from dept order by dname, loc;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        40 OPERATIONS     BOSTON
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO

设置我提到:

SQL> set recsep each
SQL> select * from dept order by dname, loc;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

        40 OPERATIONS     BOSTON

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

SQL>

很酷,不是吗?
否则,一个解决方案并不完全添加回车,而是添加空行。为此,我使用了几个CTE:

  • your_query是您(我)的当前查询,具有两个附加列:
  • rn,返回行号,按所需列排序
  • cnt,返回查询返回的总行数
  • counter是一个行生成器,生成查询返回的行数(在我的示例中,我的查询返回4行;counter也创建4行)
  • temp联合以下两个查询:
  • 您的查询微不足道
  • 它与从计数器返回rn的查询联合,而其他列是null。从视觉上看,它将返回您想要的结果(空行)
  • 最后,只选择按rn排序的有效列
SQL> with
  2  your_query as
  3    (select deptno, dname, loc,
  4       --
  5       row_number() over (order by dname, loc) rn,
  6       count(*) over () cnt
  7     from dept
  8    ),
  9  counter as
 10    (select level rn
 11     from dual
 12     connect by level <= (select cnt
 13                          from your_query
 14                          where rownum = 1
 15                         )
 16    ),
 17  temp as
 18    (select a.rn, a.deptno, a.dname, a.loc
 19     from your_query a
 20     union all
 21     select b.rn, null, null, null
 22     from counter b
 23    )
 24  select deptno, dname, loc
 25  from temp
 26  order by rn, deptno;

结果:

DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

        40 OPERATIONS     BOSTON

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

8 rows selected.

SQL>

如果您想知道它在GUI中的外观,请查看以下内容(来自SQL Developer):

相关问题