Sql sever 分組排序,sqlsever分組排序
維護人事的時候人事局要求添加一個新功能,具體需求如下:添加的人員在同一個單位的按照順序編號並且單位也要實現時間排序,也就是說有兩個排序,第一單位名稱排序,先建立的一直在前,然後按照建立時間依次排序,第二人員排序,每個單位的人按照一定的編碼進行排序。這裡聽了師哥的建議採用的是給每個新加的單位獨立編號,比如第一個建立的單位是1,然後依次是2、3、4···這樣就能很好的排序啦。這裡我針對要操作的表建立了一個觸發器,以此來實現這個功能,具體代碼與說明如下。
--=============================================--Author: 徐鳳竹-- Create date:2015年7月7日16:10:04--Description: 插入資料時查看是否存在該單位名稱,沒有則添加單位名稱,實現分組查看--=============================================ALTER TRIGGER[dbo].[trg_addoutstanding] ON [dbo].[T_OutstandingDispatch] AFTER INSERT,UPDATEASdeclare@myID varchar(50),@mycompany varchar(50),@mygroupid bigint,@sum bigint,@maxnum bigint--在新插入內容中擷取檔案編號,單位名稱select @myID=number,@mycompany=companyName frominsertedif update(companyName)BEGIN--在表中查看有相同單位名稱的記錄總數select@sum=COUNT(*) from T_OutstandingDispatch where companyName =@mycompany--查詢表中最大的組號,以便為新單位編組號select@maxnum=MAX(groupID) from T_OutstandingDispatch--查詢相同單位的組號(存在),以便為新單位編組號selecttop 1 @mygroupid=groupID fromT_OutstandingDispatch where companyName =@mycompany--如果有相同單位名稱的記錄大於1(排除自身),則給新單位賦予相同組號,否則按序編寫新組號if(@sum>1)updateT_OutstandingDispatch setgroupID=@mygroupid where number =@myIDelseupdateT_OutstandingDispatch setgroupID=@maxnum+1 where number =@myIDEND
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。