作者归档:maomao2014

mssql sqlserver sql数据分组后,取分组后最新一条记录的方法分享


摘要:
下文讲述对通过举例的方式分享,“sql分组后,取最新一条记录的方法”,如下所示:
实验环境:sql server 2008 R2


例:
取销售订单中,每个客户最近的一条订单记录。
实验思路:
使用row_number() 对数据进行群组,群组内按照订单日期倒序排序,并生成新的群组内编号

   create table [maomao365](orderNo varchar(30),custName nvarchar(30),
     qty int, amount decimal(18,2),
     orderDate datetime)
    go
    ---生成订单数据
    insert into [maomao365](orderNo,custName,qty,amount,orderDate)
     values
     ('001','深圳A集团',8,10,'2018-1-1'),
     ('002','深圳A集团',7,1008,'2018-1-2'),
     ('003','深圳C集团',6,100,'2018-1-3'),
     ('004','深圳C集团',12,1090,'2018-1-4'),
     ('005','深圳B集团',5,108,'2018-1-5'),
     ('006','深圳B集团',16,190,'2018-1-6'),
     ('007','深圳D集团',10,90,'2018-1-7'),
     ('008','深圳D集团',4,40,'2018-1-8'),
     ('009','深圳E集团',6,60,'2018-1-9')
     go
     ---显示每个客户最新一条订单记录
     select * from 
     (
       select row_number() over(partition by [custName] order by [orderDate] desc ) as keyId,* from [maomao365]   
     )
     as t 
     where t.keyId =1 
    go
    
   go 
   truncate table [maomao365]
   drop       table [maomao365]

mssql sqlserver 使用sql脚本计算指定的两个日期之间的差(年,月,日,小时,分,秒)


摘要:
下文讲述使用sql脚本的方式获取两个日期时间之间的差值,如下所示:
实验环境:sql server 2008 R2


例1:
返回“2019-2-14”和”2019-2-15 “之间的天数差异

 
  select datediff(DAY,'2019-2-14','2019-2-15') as [相差天数]


year:返回相差年份
month:返回相差月份
day:返回相差天数
hour:返回相差小时数
minute:返回相差分钟数
second:返回相差秒

例2:
返回“2019-2-14 23:59:59”和”2019-2-15 0:10:10″之间的秒数差异

 
  select datediff(second,'2019-2-14 23:59:59','2019-2-15 0:10:10') as [相差秒数]