2017-03-02 30 views
-1

我找一年的樞軸數據與MS SQL SERVER透視表

select month(createdatetime) as month, 
     year(createdatetime) as year, 
     count(*) as members 
from [toneexcel].[dbo].[teUserMemberSIMAcc] 
where year(createdatetime) > '2015' and status = 'AC' 
group by month(createdatetime), year(createdatetime) 
order by year(createdatetime), month(createdatetime) 

請建議我這下面的查詢,TQ

電流輸出

Month| year | members 
----------------------- 
1 2016 12914 
2 2016 13338 
3 2016 13633 
4 2016 11110 
5 2016 9868 
6 2016 7088 
7 2016 6785 
8 2016 8260 
9 2016 8386 
10 2016 8506 
11 2016 7187 
12 2016 7976 
1 2017 8535 
2 2017 12744 
3 2017 579 

預期輸出爲

Month | 2016 | 2017 
---------------------- 
1  12914 | 8535 
2  13338 12744 
3  13633 579 
4  11110 
5  9868 
6  7088 
7  6785 
8  8260 
9  8386 
10  8506 
11  7187 
12  7976 
+0

請出示樣品的數據和預期的輸出。 –

+0

提供一些示例數據。 –

+0

@madhan發佈問題本身的數據,而不是評論。你發佈的內容無濟於事 - 它只是一行數字。你想每年有一行,每月一次,是什麼? *更新*有關信息的問題。我會爲你做,但我不知道數據應該看起來像 –

回答

0

根據您的示例數據和預期輸出。你可以考慮這個。使用PIVOT

;with cte as (
select 1 as Month,2016 as Year,12914 as Members union 
select 2 as Month,2016 as Year,13338 as Members union 
select 3 as Month,2016 as Year,13633 as Members union 
select 4 as Month,2016 as Year,11110 as Members union 
select 5 as Month,2016 as Year,9868 as Members union 
select 6 as Month,2016 as Year,7088 as Members union 
select 7 as Month,2016 as Year,6785 as Members union 
select 8 as Month,2016 as Year,8260 as Members union 
select 9 as Month,2016 as Year,8386 as Members union 
select 10 as Month,2016 as Year,8506 as Members union 
select 12 as Month,2016 as Year,7187 as Members union 
select 1 as Month,2017 as Year,8535 as Members union 
select 2 as Month,2017 as Year,12744 as Members union 
select 3 as Month,2017 as Year,579 as Members 

) 
select * from (
select * 
from cte 
)t 
pivot (
max (members) 
for year in ([2016],[2017]) 
) 
as pvt; 

希望這可以幫助!

0
select [Month], isnull([2016],0) [2016],isnull([2017],0) [2017] 
from 
(
    select * 
    from #Table1 
) src 
pivot 
(
    max([members]) 
    for [year] in ([2016], [2017]) 
) piv; 

OR

SELECT MONTH,MAX(CASE WHEN YEAR=2016 THEN MEMBERS ELSE '' END) [2016], 
MAX(CASE WHEN YEAR=2017 THEN MEMBERS ELSE '' END) [2017] FROM #Table1 
GROUP BY MONTH