oralce 查询

娶嫦娥的玉兔 2017-12-12 04:39:02
原始数据 1列
111111235
111121237
111111239
111112341
111111234
111112236
111111238
111112340

根据后四位拆分成两列


111111234 111111235
111111238 111111239
111112340 111112341
111112236 111112237
...全文
242 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2017-12-13
  • 打赏
  • 举报
回复
我看你的结果中后一列总是比前一列小1,如果你要这样的结果,大概的逻辑我是知道的,但是Oracle用的少,语法就不太清楚了。下面是MSSQL的语法,你可以参考下

--> --> 听雨停了-->测试数据

if not object_id(N'Tempdb..#tab') is null
drop table #tab
Go
Create table #tab([id] int)
Insert #tab
select 111111235 union all
select 111112237 union all
select 111111239 union all
select 111112341 union all
select 111111234 union all
select 111112236 union all
select 111111238 union all
select 111112340 UNION ALL
select 111112342 UNION ALL
select 111112344
--测试数据结束

--rn奇偶取模得到0或者1
--id这一列用来分组用的
Select id,id%2 AS rn,CASE WHEN id%2=1 THEN id-1 ELSE id END AS gb
INTO #tab2
from #tab
ORDER BY gb

SELECT * FROM #tab2

--行转列显示
DECLARE @name VARCHAR(max),@sql VARCHAR(max)
set @name =stuff((SELECT DISTINCT ',['+cast(rn AS VARCHAR(20))+']' from #tab2 for xml PATH('')),1,1,'')
set @sql ='SELECT [0],[1] from #tab2 pivot(max(id)for rn in('+@name+'))a'
PRINT @sql
EXEC( @sql)

碧水幽幽泉 2017-12-13
  • 打赏
  • 举报
回复
引用 2 楼 jdsnhan 的回复:
规则是啥啊。但大小个排序,然后相邻的两个在一起?

鬼知道呢,拆分规则啥都没说。任何答案都可以被认为是错误的。
jdsnhan 2017-12-13
  • 打赏
  • 举报
回复
规则是啥啊。但大小个排序,然后相邻的两个在一起?
碧水幽幽泉 2017-12-13
  • 打赏
  • 举报
回复
不会做,路过,帮忙顶下。
娶嫦娥的玉兔 2017-12-13
  • 打赏
  • 举报
回复
引用 2 楼 jdsnhan 的回复:
规则是啥啊。但大小个排序,然后相邻的两个在一起?
谢谢你回复,但和我要的口径有些出入 你看下呢 类似下列数据 987654325 987654346 987654347 987654348 987654349 987654350 987654352 987654359 987654360 只有最后4位不同,分两列展示 如果存在最后两位是 25,52 则优先展示 987654325 987654352 如果不存在 987654359 987654360 987654348 987654349
娶嫦娥的玉兔 2017-12-13
  • 打赏
  • 举报
回复
引用 3 楼 qq646748739 的回复:
[quote=引用 2 楼 jdsnhan 的回复:] 规则是啥啊。但大小个排序,然后相邻的两个在一起?
鬼知道呢,拆分规则啥都没说。任何答案都可以被认为是错误的。[/quote] 谢谢回复,但和我要的口径有些出入 你看下呢 类似下列数据 987654325 987654346 987654347 987654348 987654349 987654350 987654352 987654359 987654360 只有最后4位不同,分两列展示 如果存在最后两位是 25,52 则优先展示 987654325 987654352 如果不存在 987654359 987654360 987654348 987654349
娶嫦娥的玉兔 2017-12-13
  • 打赏
  • 举报
回复
谢谢你回复,但和我要的口径有些出入 你看下呢 类似下列数据 987654325 987654346 987654347 987654348 987654349 987654350 987654352 987654359 987654360 只有最后4位不同,分两列展示 如果存在最后两位是 25,52 则优先展示 987654325 987654352 如果不存在 987654359 987654360 987654348 987654349

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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