以下实例用来通过DeviceID分组然后DeviceTime排序 每次9个9个放进新表中:
USE [LoadTestManager] GO /****** Object: StoredProcedure [dbo].[uspSortDataForBattery] Script Date: 12/30/2016 1:03:50 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[uspSortDataForBattery] AS BEGIN declare @i int declare @j int select @j=count(1)/10 from [dbo].[DataPointGeoBattery] set @i=1 while @i < @j begin Insert INTO NewDataPointGeoBattery select BB.[DeviceID] ,BB.[RequestID] ,BB.[DeviceTime] ,BB.[ReceiveTime] ,BB.[BatteryInternal] ,BB.[RowModifiedOn] ,BB.[RowCreatedOn] from (select B.*, rank() over(partition by B.DeviceID order by B.DeviceTime) rk from [DataPointGeoBattery] B )BB where BB.rk < 10; DELETE from [DataPointGeoBattery] WHERE ID IN ( select BB.ID from (select B.*, rank() over(partition by B.DeviceID order by B.DeviceTime) rk from [DataPointGeoBattery] B )BB where BB.rk < 10); set @i=@i+1 end SET NOCOUNT ON; END GO