求一个sql语句

hb9191 2012-07-03 03:13:00
表T:
字段:XH ZD1 ZD2
1 a1 a2
2 s2 s1
3 d7 d5
……
XH为序号

通过sql查询得到的结果为:
1 a1
2 a2
3 s2
4 s1
5 d7
6 d5
……
这个sql怎么写?谢谢!
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hb9191 2012-07-03
  • 打赏
  • 举报
回复
先谢谢了。但这种方法不可用呀,a1 a2 s2 s1 d7 d5 只是示意,你并不知道实际内容是什么?而且可能记录很多,无法一一列出。

我的笨办法:
SELECT xh * 2 - 1 AS xh1, xh AS xh2, zd1 FROM t
UNION
SELECT xh * 2 AS xh1, xh AS xh2, zd2 FROM t
ORDER BY xh1
  • 打赏
  • 举报
回复

with t1 as
(
select 1 xh,'a1' zd1,'a2' zd2 from dual
union all
select 2 xh,'s2' zd1,'s1' zd2 from dual
union all
select 3 xh,'d7' zd1,'d5' zd2 from dual
)

select zd1
from
(
select xh,zd1
from t1
union all
select xh+0.1,zd2
from t1
)
order by xh

zd1
----------------
1 a1
2 a2
3 s2
4 s1
5 d7
6 d5

freetd 2012-07-03
  • 打赏
  • 举报
回复
两条语句的结果都是一样,改成d的别名为了好区分原来已存在的c列
freetd 2012-07-03
  • 打赏
  • 举报
回复
写错了,忘记了已经有个c列了,把c列改为d


WITH T AS (
SELECT 1 a, 'a1' b, 'a2' c FROM dual
UNION ALL SELECT 2, 's2', 's1' FROM dual
UNION ALL SELECT 3, 'd7', 'd5' FROM dual
)
SELECT ROW_NUMBER() OVER (ORDER BY a,d) ID,b FROM(
SELECT T.a,1 d,T.B FROM T
UNION ALL
SELECT T.a,2 d, T.c FROM T ORDER BY 1
) x
freetd 2012-07-03
  • 打赏
  • 举报
回复

WITH T AS (
SELECT 1 a, 'a1' b, 'a2' c FROM dual
UNION ALL SELECT 2, 's2', 's1' FROM dual
UNION ALL SELECT 3, 'd7', 'd5' FROM dual
)
SELECT ROW_NUMBER() OVER (ORDER BY a,c) ID,b FROM(
SELECT T.a,1 c,T.B FROM T
UNION ALL
SELECT T.a,2 c, T.c FROM T ORDER BY 1
) x;

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧