求一句sql语句,最好能解释这在sql是什么变换。(50分)

  • 主题发起人 主题发起人 squarevictory
  • 开始时间 开始时间
S

squarevictory

Unregistered / Unconfirmed
GUEST, unregistred user!
原表结构:
name sex
张三 男
李司 男
王五 男
黄容 女
小泉 狗

查询后结果
name sex name sex name sex
张三 男 李司 男 李司 男
王五 男 黄容 女 小泉 狗
 
什么规律啊这是?
说得不清楚!~
 
SELECT top 2 *,*,* FROM ...
 
用视图可以做!不过我觉得你肯定是数据库没设计好!
 
select (case when (rownum div 3)=1 then name end) name,
(case when (rownum div 3)=1 then sex end) sex,
(case when (rownum div 3)=2 then name end) name,
(case when (rownum div 3)=2 then sex end) sex,
(case when (rownum div 3)=0 then name end) name,
(case when (rownum div 3)=0 then sex end) sex
from table
可能语法有问题,因为在网吧上,不方便调试,大体意思是通过rownum行号判断若除3余1就显示在前两列,余2就显示在后两列,整除就在最后两列.
 
要不用函數啊
功能很強大的
 
原表结构:
name sex
张三 男
李司 男
王五 男
黄容 女
小泉 狗

查询后结果
name sex name sex name sex
张三 男 李司 男 王五 男
黄容 女 小泉 狗

不好意思,我打多了个记录。
应该是这样的。
 
这不关数据库设计的问题,另外sfeicyf的方法也不太灵活。是我没表达清楚吗?
假如这个表就2个字段,name,sex。有90条记录
如果用select * from table的话,会显示90条记录的查询结果,但我想实现的效果是有3列来显示这2个字段,第一列为前30条,第二列为中间30条,第三列为最后30条记录。这样说清楚点了吧
 
分别查出每一列,再合并。
select a.r, a.name, a.sex, b.name, b.sex, c.name, c.sex
from (select rownum as r, name, sex
from (select rownum as rownum1, name, sex from pitempiece)
where (mod(rownum1, 3) = 1)) a,
(select rownum as r, name, sex
from (select rownum as rownum1, name, sex from pitempiece)
where (mod(rownum1, 3) = 2)) b,
(select rownum as r, name, sex
from (select rownum as rownum1, name, sex from pitempiece)
where (mod(rownum1, 3) = 0)) c
where a.r = b.r
and b.r = c.r
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部