关于一个MSSQL问题。一列分成两列的问题。问题如下:

[复制链接]
查看11 | 回复1 | 2011-3-7 02:54:38 | 显示全部楼层 |阅读模式
ID
1
3
4
5
6
7
8
9
10
.............................................
变成
ID1
LD2
1
3
4
5
6
7
8
9
10
null
语句大概可以这样写:但是我想请教一下有没有更好的方法
select *
from
(select *
from
(select ID,row_number()over(order by getdate()) as row
from search_table) m
where m.row %2=1) a
left join
(select *
from
(select ID,row_number()over(order by getdate()) as row
from search_table) m
where m.row %2=0) b
on a.row 1=b.row
回复

使用道具 举报

千问 | 2011-3-7 02:54:38 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">从性能上讲,你这个查询只扫描表了两次,已经是很不错的了。
如果这是个很大的表,可以考虑用快速只进游标,只扫描表一次。当然,如果表比较小的话,就没必要了,因为游标需要额外的开销。

从可读性来讲,可以用CTE代替两次生成行号的查询,使语句简洁一点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行