PIVOT運算符使用(動態行轉列)


PIVOT運算符用於在列和行之間對數據進行旋轉或透視轉換,同時執行聚合運算

官方的語法如下:

PIVOT(

聚合函數(value_column)

FOR pivot_column

IN(<column_list>)

)


我這邊有一個保存網站下所有子域名PV的表PV_Test,數據如下

現在要查詢每個域名下不同日期的PV

SQL代碼如下

 DECLARE 
 --保存最終執行的SQL語句
 @strSql nvarchar(1000),
 --定義變量保存要轉化為列的數據
 @Date nvarchar(500)
--賦值 很重要,不賦值執行沒結果
 SET @Date=''
 --賦值 把所有要轉化為列的數據保存在字符串中,並且以逗號分隔
 SELECT  @Date=@Date+CDate  FROM (SELECT DISTINCT '['+CONVERT(varchar(10), CDate, 23)+'],' AS CDate FROM PV_Test) AS T1
 --打印@Date
  PRINT(@Date)
 --去掉末尾的一個逗號
 SET @Date=SUBSTRING(@Date,1,LEN(@Date)-1)
 --使用PIVOT運算符轉化
 SET @strSql= 'SELECT * FROM (SELECT Domain,CONVERT(varchar(10), CDate, 23) AS RQ,PV FROM dbo.PV_Test) AS a PIVOT(SUM(PV) FOR RQ IN ('+@Date+') ) AS b'
 --打印最終執行的SQL
 PRINT(@strSql)
 --執行sql
 EXEC (@strSql)

備注已經寫得很清楚了,執行結果如下

可以清楚的看到每個域名下各個日期的PV情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM