• 常见sql操作


    有如下表结构

    姓名  项目   奖金 时间

    张三  项目1  174  2010-01-01 

    张三  项目2  833  2010-01-02 

    张三  项目3  934  2010-01-03

    李四  项目1  745  2010-01-01

    李四  项目2  845 2010-01-02

    李四  项目3  946  2010-01-03

    王五  项目1  33  2010-01-01

    变成姓名 项目 奖金的交叉表:

    DECLARE @sbegin NVARCHAR(max)
    	 
    	SET @sbegin ='select * from (select 姓名,项目 ,奖金 from  tb) a pivot (max(奖金) for 项目 in('
    	DECLARE @send NVARCHAR(100);
    	SET @send=')) p';
     
     
    	DECLARE @sColum nvarchar(1000)
    	SET @sColum = ''
    	SELECT @sColum = @sColum+ '['+项目+']'  +',' FROM (SELECT  DISTINCT(项目) AS 项目  FROM tb	 ) t
    	SET @sColum= substring(@sColum,1,len(@sColum)-1)
    	EXEC (@sbegin+@sColum+@send)
    
    
     

    要统计最近3次奖金情况

     select * from
     (select 姓名,num ,奖金  from (select row_number() over(partition by 姓名 order by 时间) as num,* from tb) a where num<=3  )
     as c pivot ( max(奖金) for  num  in ( [3] , [2],[1])) a 
    
    
  • 相关阅读:
    vue系列——数据请求
    优化记录
    优化记录
    正则
    跨域问题
    原型链之prototype/__proto__/constructor
    vue系列——组件数据通讯(二)
    vue系列——组件数据通讯(一)
    ES6(一)
    ES5总结
  • 原文地址:https://www.cnblogs.com/fuhui/p/1940815.html
Copyright © 2020-2023  润新知