1. 程式人生 > >PCB MS SQL 排序應用---相鄰數據且相同合並處理

PCB MS SQL 排序應用---相鄰數據且相同合並處理

bubuko 分享 數據 with 排序 num 要求 數據處理 轉換

這是一個很有趣SQL數據處理應用,具體需求如下

ERP需要工程將物料編碼相鄰的編碼合並求和BOM用量,巧妙的用到了已有排序號分組排序號之間的差值求解

示例:

原數據:

技術分享圖片

要求轉換:

技術分享圖片

實際轉換後數據:

技術分享圖片

SQL代碼實現:

with tab1 as
(
select 1 as [Rank] ,1710 as OPERATION_CODE,3.621000 UNIT_TIME
UNION  
select 2 as [Rank] ,1710 as OPERATION_CODE,3.621000 UNIT_TIME
UNION 
select 3  as [Rank] ,1711 as OPERATION_CODE,3.333000
UNIT_TIME UNION select 4 as [Rank] ,1710 as OPERATION_CODE,0.288000 UNIT_TIME UNION select 5 as [Rank] ,1711 as OPERATION_CODE,0.288000 UNIT_TIME UNION select 6 as [Rank] ,1711 as OPERATION_CODE,3.333000 UNIT_TIME ) SELECT * into #tab1 FROM tab1 SELECT * FROM #tab1 SELECT MAX([Rank]) [Rank],OPERATION_CODE,SUM
(UNIT_TIME) UNIT_TIME FROM (SELECT OPERATION_CODE,[Rank],UNIT_TIME,row_number()over(partition by OPERATION_CODE order by [Rank]) -[Rank] DiffVal FROM #tab1) a GROUP BY OPERATION_CODE,DiffVal ORDER BY MAX([Rank])

PCB MS SQL 排序應用---相鄰數據且相同合並處理