在Oracle SQL中,如何在每个唯一行之间显示空行?

时间:2015-06-13 19:31:26

标签: sql oracle

假设我有一个简单的查询,如:

SELECT employee, ITEM_TYPE, COUNT(ITEM_TYPE)
FROM   hr_database

因此输出可能看起来像

 BOB  MUGS  4 
 BOB  PENCILS 10 
 CAT  MUGS  2 
 CAT  PAPERCLIPS  7 
 SAL  MUGS  11

但为了便于阅读,我想在输出中的每个用户之间添加一个空行(即可读性),如下所示:

 BOB  MUGS  4 
 BOB  PENCILS 10 

 CAT  MUGS  2 
 CAT  PAPERCLIPS  7 

 SAL  MUGS  11

有没有办法在Oracle SQL中执行此操作?到目前为止,I found this link but it doesn't match what I need。我想在查询中使用WITH?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以在数据库中执行此操作,但这种类型的处理应该在应用程序层完成。

但是,如何在数据库中找到它,这是一个有趣的技巧,这是你的具体问题:

union all
但是,我强调,这实际上是为了娱乐,也许是为了更好地理解SQL的工作原理。在现实世界中,您可以在应用程序层执行此类工作。

这是如何工作的摘要。 x为每位员工增加一行。 case是排序的优先级 - 因为您必须对结果集进行排序才能获得正确的排序。需要employee语句来阻止cnt出现在第一列中。 <{1}}永远不应该是有效行的NULL

答案 1 :(得分:0)

您可以尝试使用普通的联合和独特的方式

select emp,item_type,cnt from 
(select distinct ' ' as emp,' ' as item_type ,' ' as cnt, employee
from hr_database
union
select employee as emp,item_type ,to_char(count(item_type)) as cnt, employee
from hr_database
group by employee,item_type)a
order by a.employee