zoukankan      html  css  js  c++  java
  • 常见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 
    
    
  • 相关阅读:
    教你如何剖析源码
    Java 简介
    java 入门-helloWorld
    linux yum 命令
    Linux vi/vim
    Linux 磁盘管理
    Linux 用户和用户组管理
    Linux 文件与目录管理
    Linux 文件基本属性
    Linux安装Mysql
  • 原文地址:https://www.cnblogs.com/fuhui/p/1940815.html
Copyright © 2011-2022 走看看