T-Sql Pivot & Unpivot

開門見山:行轉列數據庫

CREATE TABLE SALESBYQUARTER    (
YEAR INT,
QUARTER VARCHAR(2),
AMOUNT MONEY    );it

SET NOCOUNT ON
    DECLARE @index INT
    DECLARE @q INT
    SET @index = 0
    DECLARE @year INT
    while (@index < 30)
    BEGIN
        SET @year = 2005 + (@index % 4)
        SET @q = (CAST((RAND() * 500) AS INT) % 4) + 1
        INSERT INTO SalesByQuarter VALUES (@year, 'Q' + CAST(@q AS CHAR(1)), RAND() * 10000.00)
        SET @index = @index + 1
    ENDio

按以上Sql建立銷售表而且插入幾筆數據table

實現行轉列:select

SELECT *FROM SALESQUARTER數據

PIVOTtab

(di

SUM(AMOUNT)while

FOR QUARTER IN (Q1,Q2,Q3,Q4)co

)AS PVT

因爲Pivot是屬於Sql Server2005以上版本的屬性,故請在數據庫的屬性->Options->Compatibility Level:Sql Server 2005(90),不然會Run Fail.

 

列轉行:

create table #temptable(rowid int,colorname varchar(25),Hexa varchar(7)  
,R tinyint,G tinyint,B tinyint)   
GO  
insert into #temptable values(1,'Violet','#8B00FF',139,0,255);  
insert into #temptable values(2,'Indigo','#4B0082',75,0,130);  
insert into #temptable values(3,'Blue','#0000FF',0,0,255);  
insert into #temptable values(4,'Green','#00FF00',0,255,0);  
insert into #temptable values(5,'Yellow','#FFFF00',255,255,0);  
insert into #temptable values(6,'Orange','#FFA500',255,165,0);  
insert into #temptable values(7,'Red','#FF0000',255,0,0);  
GO  
select * from #temptable  
GO 

按照以上Sql建立臨時表,並插入數據

SELECT *FROM (SELECT *FROM #TEMPTABLE) P

UNPIVOT

(RGBVALUE FOR RGB IN(R,G,B)) AS UPVT;

相關文章
相關標籤/搜索