我有两个Column Users和NewUsers我需要将这两个作为Quarterly求和,所以我使用pivot函数,所以我在下面写了查询.... 代码是
select [week],[years],pivoting.[1] as Q1 ,pivoting.[2] AS Q2,pivoting.[3] AS Q3,pivoting.[4] AS Q4,pivoting.[1] as N1,pivoting.[2] AS N2,pivoting.[3] AS N3,pivoting.[4] AS N4 into #addpivot from
(
select Week,years,Quarter,users,NewUsers from #pivottable
) as PivotData
pivot
(
sum(users) for Quarter in ([1],[2],[3],[4])
) as pivoting
pivot
(
sum(NewUsers) for Quarter in ([1],[2],[3],[4])
) as pivoting
但它在第二行季度无效列名
中显示错误我出错的地方不明白请帮帮我.......
答案 0 :(得分:0)
我明白多少价值观是什么意思...... 枢轴就像这样......
SELECT *
FROM table
PIVOT( SUM(NewUsers) FOR Quarter IN ([1],[2],[3],[4]) ) AS PVTTable
答案 1 :(得分:0)
如果我已正确读取您的数据,您需要取消数据的显示并添加一列以识别要在旋转之前进行数据转换的值。我称这个类别为'并使用CROSS APPLY,但您也可以使用CASE。
SELECT * INTO #PivotTable FROM (
VALUES
(1, 1, 1, 10, 12),
(1, 1, 1, 11, 13),
(1, 1, 2, 8, 10),
(1, 1, 2, 7, 11),
(1, 1, 3, 11, 14),
(1, 1, 3, 8, 15),
(1, 1, 4, 15, 10),
(1, 1, 4, 17, 11)
)A (Week,Years,Quarter,Users,NewUsers)
SELECT * FROM
(SELECT Week
,Years
,Category
,Value FROM #PivotTable
CROSS APPLY
(SELECT 'NewUsersQ'+CONVERT(VARCHAR(1),Quarter) Category, NewUsers Value
UNION ALL
SELECT 'UsersQ'+CONVERT(VARCHAR(1),Quarter) Category, Users Value
) A
) SRC
PIVOT (
SUM(Value) FOR Category IN
([UsersQ1], [NewUsersQ1], [UsersQ2], [NewUsersQ2], [UsersQ3], [NewUsersQ3], [UsersQ4], [NewUsersQ4])
)Pvt
Week Years UsersQ1 NewUsersQ1 UsersQ2 NewUsersQ2 UsersQ3 NewUsersQ3 UsersQ4 NewUsersQ4
----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
1 1 21 25 15 21 19 29 32 21
答案 2 :(得分:0)
SELECT [week]
,[years]
,SUM(CASE WHEN Quarter = 1 THEN users ELSE 0 END) AS Q1
,SUM(CASE WHEN Quarter = 2 THEN users ELSE 0 END) AS Q2
,SUM(CASE WHEN Quarter = 3 THEN users ELSE 0 END) AS Q3
,SUM(CASE WHEN Quarter = 4 THEN users ELSE 0 END) AS Q4
,SUM(CASE WHEN Quarter = 1 THEN NewUsers ELSE 0 END) AS N1
,SUM(CASE WHEN Quarter = 2 THEN NewUsers ELSE 0 END) AS N2
,SUM(CASE WHEN Quarter = 3 THEN NewUsers ELSE 0 END) AS N3
,SUM(CASE WHEN Quarter = 4 THEN NewUsers ELSE 0 END) AS N4
FROM #pivottable
GROUP BY [week]
,[years]