UNPIVOT UNPIVOT則相反,把數據從列旋轉到行 SELECT * INTO product_vlues FROM ( SELECT NAME , YEAR(shijian) AS shijian , jiage FROM dbo.product ) AS ov PIVOT ( SUM(ov ...
UNPIVOT UNPIVOT則相反,把數據從列旋轉到行 SELECT * INTO product_vlues FROM ( SELECT NAME , YEAR(shijian) AS shijian , jiage FROM dbo.product ) AS ov PIVOT ( SUM(ov.jiage) FOR ov.shijian IN ( [2005], [2006], [2008] ) )AS p SELECT * FROM product_vlues -------------------結果----------------
-----查詢視圖用UNPIVOT---------------------------- SELECT * FROM product_vlues UNPIVOT(jiange FOR shijian IN ( [2005], [2006], [2008] )) AS u -----結果----------------------------------------------
---------步驟分析--------------------------------------- UNPIVOT涉及三個邏輯處理階段 1.U1:生成副本 2.U2:提取元素 3.U3:刪除帶有NULL的行 UNPIVOT輸入是左表表達式。 第一步先為左表表達式中的行生成多個副本。要進行逆透視轉換的每一列(在UNPIVOT運算符的In子句中出現的列名)都會生成一個副本。 第二步從來源列中提出與行的當前副本所代表的逆透視轉換元素相對應的值。保存的目標名稱是FOR子句之前的指定的(本例中為Jiage)。這個目標列將保存虛擬表中與當前行的銷售年份相對應的列值。 第三步將刪除掉結果值為NULL的行,返回虛擬表。
Copyright © 2017 程英暾. All Rights Reserved.