假设我有一个简单的查询,如:
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?
谢谢!
答案 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