SQL 行列转换配置(月度电量分析)

本文由  于 2021-12-22 16:05 发布在  SQL    

 

 

  DECLARE @kssj DATETIME
  DECLARE @jssj DATETIME
  SET @kssj='2021-01-01'
  SET @jssj='2021-01-20'
 
   IF OBJECT_ID('tempdb.dbo.#temp_RQ') IS NOT NULL DROP TABLE #temp_RQ
  CREATE TABLE #temp_RQ (RQ DATETIME)
 
  DECLARE @drrq DATETIME
  SET @drrq=@kssj
 
  WHILE @drrq<=@jssj
  BEGIN
 INSERT INTO #temp_RQ
 SELECT @drrq
 SET @drrq=@drrq+1
 
  END
 
 
 
 
   IF OBJECT_ID('tempdb.dbo.#temp_ymxxx') IS NOT NULL DROP TABLE #temp_ymxxx
 CREATE TABLE #temp_ymxxx (区域 VARCHAR(50),计量表名 VARCHAR(50),电量 DECIMAL(18,2),日期 DATETIME)
 
 INSERT INTO #temp_ymxxx
 SELECT 区域='一',计量表名='照明',电量='1.4',日期='2021-01-01 00:00:00'
 UNION
 SELECT 区域='一',计量表名='照明',电量='3.5',日期='2021-01-02 00:00:00'
 UNION
  SELECT 区域='二',计量表名='动力',电量='1.4',日期='2021-01-11 00:00:00'
 UNION
  SELECT 区域='一',计量表名='照明',电量='7',日期='2021-01-04 00:00:00'
 UNION
  SELECT 区域='二',计量表名='动力',电量='8',日期='2021-01-15 00:00:00'
 


declare @sql varchar(max)
 set @sql=' select 区域 ,计量表名,总电量=sum(电量)  '
select  @sql=@sql+',['+CONVERT(VARCHAR(10),RQ,120)+']=isnull(max(case wheN   日期='''+CONVERT(VARCHAR(10),RQ,120)+'''  then convert(varchar(50), 电量)   else '''' end),'''') '
from #temp_RQ order by RQ

set @sql=@sql+' from #temp_ymxxx
group by   区域 ,计量表名    '
print @sql
exec (@sql)

 

最新评论
网站管理  |  赵猛的个人主页  |  手机版  |  RSS  |  留言建议  |  关于本站  |  联系方式

All Rights Reserved. Powered by emlog Themes by 大智若愚
网站备案号:苏ICP备15011688号-1