原始資料 1列
111111235
111121237
111111239
111112341
111111234
111112236
111111238
111112340
根據后四位拆分成兩列
111111234 111111235
111111238 111111239
111112340 111112341
111112236 111112237
uj5u.com熱心網友回復:
不會做,路過,幫忙頂下。
uj5u.com熱心網友回復:
規則是啥啊。但大小個排序,然后相鄰的兩個在一起?uj5u.com熱心網友回復:
鬼知道呢,拆分規則啥都沒說。任何答案都可以被認為是錯誤的。
uj5u.com熱心網友回復:
我看你的結果中后一列總是比前一列小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)
uj5u.com熱心網友回復:
謝謝你回復,但和我要的口徑有些出入 你看下呢類似下列資料
987654325
987654346
987654347
987654348
987654349
987654350
987654352
987654359
987654360
只有最后4位不同,分兩列展示 如果存在最后兩位是 25,52 則優先展示
987654325 987654352
如果不存在
987654359 987654360
987654348 987654349

uj5u.com熱心網友回復:
謝謝回復,但和我要的口徑有些出入 你看下呢
類似下列資料
987654325
987654346
987654347
987654348
987654349
987654350
987654352
987654359
987654360
只有最后4位不同,分兩列展示 如果存在最后兩位是 25,52 則優先展示
987654325 987654352
如果不存在
987654359 987654360
987654348 987654349

uj5u.com熱心網友回復:
規則是啥啊。但大小個排序,然后相鄰的兩個在一起?
謝謝你回復,但和我要的口徑有些出入 你看下呢
類似下列資料
987654325
987654346
987654347
987654348
987654349
987654350
987654352
987654359
987654360
只有最后4位不同,分兩列展示 如果存在最后兩位是 25,52 則優先展示
987654325 987654352
如果不存在
987654359 987654360
987654348 987654349

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/77997.html
標籤:開發
上一篇:使用navicat Premium連接Oracle資料庫,表內欄位備注亂碼問題
下一篇:SQL 優化問題
