卖水果的

操作系统、数据库、个人观点及学习过程

« 在Oracle 9 下实验表空间的传输Oracle 执行计划之 多个条件先后使用同一索引 »

报表数据分栏显示

 前些群里有个兄弟提到,一个查询结果,在展现报表时,要分两栏,大体效果如下: 

ID | NAME 
------------------------------------------------------ 
01 | 张三 
02 | 李四 
03 | 王五 
------------------------------------------------------ 
结果要求:第一行和第二行要打印到第一行,第三行和第四行(如果有)打印到第二行: 


ID | NAME | ID | NAME 
------------------------------------------------------ 
01 | 张三 | 02 | 李四 
03 | 王五 
------------------------------------------------------ 


SQL> with test as ( 
  2  select 1 n,'a' name from dual union all 
  3  select 2 n,'b' name from dual union all 
  4  select 3 n,'c' name from dual union all 
  5  select 4 n,'d' name from dual union all 
  6  select 5 n,'e' name from dual union all 
  7  select 6 n,'f' name from dual union all 
  8  select 7 n,'g' name from dual 
  9  ) 
 10  select 
 11  trunc((rownum+1) / 2) OrderID , 
 12  max(case when mod(rownum,2) = 1 then n else null end) as N1 , 
 13  max(case when mod(rownum,2) = 1 then name else null end) as name1 , 
 14  max(case when mod(rownum,2) = 0 then n else null end) as N2 , 
 15  max(case when mod(rownum,2) = 0 then name else null end) as name2 
 16  from test 
 17  group by trunc((rownum+1) / 2) 
 18  / 

    ORDERID   |     N1 |  N    |     N2 | N 
---------- ---------- - ---------- - 
         1    |      1 | a     |     2  | b 
         2    |      3 | c     |     4  | d 
         3    |      5 | e     |     6  | f 
         4    |      7 | g 

SQL> 

 

 

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427  Theme By Bokezhuti.cn

CopyRight 2009-2011 msgde.net , All rights reserved
联系站长:wmxcn2000@sina.com|MSN联系:msgde.net@hotmail.com