透视和取消透视tsql中具有多列的表

透视和取消透视tsql中具有多列的表,sql,tsql,pivot-table,Sql,Tsql,Pivot Table,我需要旋转这个表,它看起来像这样: 我需要的是一个包含13列的表,如下所示: 我正在RazorSQL中使用tsql。下面是生成最终表的代码,现在需要对其进行数据透视: select s5.datess, ISNULL(s5.Active_And_Good,0) AS Active_And_Good, ISNULL(s5.Inactive_And_Good,0) AS Inactive_And_Good, ISNULL(s5.Active_And_Bad,0) AS Activ

我需要旋转这个表,它看起来像这样:

我需要的是一个包含13列的表,如下所示:

我正在
RazorSQL
中使用tsql。下面是生成最终表的代码,现在需要对其进行数据透视:

   select s5.datess, ISNULL(s5.Active_And_Good,0) AS Active_And_Good,  ISNULL(s5.Inactive_And_Good,0) AS Inactive_And_Good,
    ISNULL(s5.Active_And_Bad,0) AS Active_And_Bad, ISNULL(s6.Inactive_And_Bad,0) AS Inactive_And_Bad
            from
            (select s3.dates as datess, s3.#Active_Good as Active_And_Good,  s3.#Inactive_Good as Inactive_And_Good, 
    s4.Active_Bad as Active_And_Bad from
    (select s1.Dates as dates, s1.Active_Good as #Active_Good, s2.Inactive_Good as #Inactive_Good from
    (select count(DISTINCT Customer_Id) as Active_Good, Dates
    from #fact_table
    where Customer_Status = 1
    group by Dates) as s1
    full outer join
    (select count(DISTINCT Customer_Id) as Inactive_Good, Dates
    from #fact_table
    where Customer_Status = 2
    group by Dates) as s2
    on s1.Dates=s2.Dates)  as s3
    full outer join
    (select count(DISTINCT Customer_Id) as  Active_Bad, Dates
    from #fact_table
    where Customer_Status = 3
    group by Dates) as s4
    on s3.dates= s4.Dates) as s5
    full outer join
    (select count(DISTINCT Customer_Id) as Inactive_And_Bad, Dates
    from #fact_table
    where Customer_Status = 4
    group by Dates) as s6
    on s5.datess= s6.Dates ;

这应该行得通。在所提供表格的精简版本上进行测试

Create table #test ([datess] date, [Active_AndGood] int, [Inactive_And_Good] int)
insert into #test ([datess],[Active_AndGood],[Inactive_And_Good])
values('2015-01-31',1,4) , ('2015-02-28',2,3)

select *
from #test
unpivot (value for name in ([Active_AndGood],[Inactive_And_Good])) up
pivot (max(value) for datess in ([2015-01-31],[2015-02-28])) p
产生以下结果:


每当我需要旋转或取消旋转时,我都会查看这些链接,以刷新我对这类事情如何工作的记忆

结果集:

-- Selecting and checking entires in table
Cust Product QTY
------------------------- -------------------- -----------
KATE VEG 2
KATE SODA 6
KATE MILK 1
KATE BEER 12
FRED MILK 3
FRED BEER 24
KATE VEG 3

-- Pivot Table ordered by PRODUCT
PRODUCT FRED KATE
-------------------- ----------- -----------
BEER 24 12
MILK 3 1
SODA NULL 6
VEG NULL 5

-- Pivot Table ordered by CUST
CUST VEG SODA MILK BEER CHIPS
------------------------- ----------- ----------- ----------- ----------- -----------
FRED NULL NULL 3 24 NULL
KATE 5 6 1 12 NULL

-- Unpivot Table ordered by CUST
CUST PRODUCT QTY
------------------------- -------- -----------
FRED MILK 3
FRED BEER 24
KATE VEG 5
KATE SODA 6
KATE MILK 1
KATE BEER 12 12

没问题o)
-- Selecting and checking entires in table
Cust Product QTY
------------------------- -------------------- -----------
KATE VEG 2
KATE SODA 6
KATE MILK 1
KATE BEER 12
FRED MILK 3
FRED BEER 24
KATE VEG 3

-- Pivot Table ordered by PRODUCT
PRODUCT FRED KATE
-------------------- ----------- -----------
BEER 24 12
MILK 3 1
SODA NULL 6
VEG NULL 5

-- Pivot Table ordered by CUST
CUST VEG SODA MILK BEER CHIPS
------------------------- ----------- ----------- ----------- ----------- -----------
FRED NULL NULL 3 24 NULL
KATE 5 6 1 12 NULL

-- Unpivot Table ordered by CUST
CUST PRODUCT QTY
------------------------- -------- -----------
FRED MILK 3
FRED BEER 24
KATE VEG 5
KATE SODA 6
KATE MILK 1
KATE BEER 12 12