0
我在使用SQL Server 2008 R2的數據透視表查詢中遇到了計數問題。使用SQL Server 2008 R2的數據透視表
例:
我有一個表testrf
:
CREATE TABLE testrf
(
cola INTEGER,
colb VARCHAR(10)
)
對於一些數據:
INSERT INTO testrf VALUES(1,'x')
INSERT INTO testrf VALUES(1,'x')
INSERT INTO testrf VALUES(2,'x')
INSERT INTO testrf VALUES(3,'y')
INSERT INTO testrf VALUES(4,'y')
INSERT INTO testrf VALUES(5,'c')
INSERT INTO testrf VALUES(6,'c')
INSERT INTO testrf VALUES(7,'c')
INSERT INTO testrf VALUES(8,'d')
INSERT INTO testrf VALUES(3,'y')
INSERT INTO testrf VALUES(12,'M1')
INSERT INTO testrf VALUES(13,'L1')
INSERT INTO testrf VALUES(14,'C2')
看起來像這樣:
SELECT * FROM testrf;
cola colb
------------
1 x
1 x
2 x
3 y
4 y
5 c
6 c
7 c
8 d
3 y
12 M1
13 L1
14 C2
我的透視表查詢:
DECLARE @cols NVARCHAR(MAX)
DECLARE @SQL NVARCHAR(MAX)
SELECT @cols = STUFF ((SELECT DISTINCT '],[' + v.colb
FROM testrf AS v
FOR XML PATH('')), 1, 2, '') + ']'
SET @SQL = N'SELECT cola,'+ @cols +'
FROM
(SELECT v.cola,v.colb
FROM testrf AS v
GROUP BY v.cola,v.colb
) p
PIVOT
(
count(colb)
FOR colb IN ('+ @cols + ')
) AS pvt';
EXEC(@SQL)
獲得結果:
cola c C2 d L1 M1 x y
----------------------------------
1 0 0 0 0 0 1 0
2 0 0 0 0 0 1 0
3 0 0 0 0 0 0 1
4 0 0 0 0 0 0 1
5 1 0 0 0 0 0 0
6 1 0 0 0 0 0 0
7 1 0 0 0 0 0 0
8 0 0 1 0 0 0 0
12 0 0 0 0 1 0 0
13 0 0 0 1 0 0 0
14 0 1 0 0 0 0 0
注意:colb=x
是中出現了2次,cola=1
和colb=y
中出現了2次cola=3
。在這裏計算問題。
非常感謝你 – Meem 2014-09-11 06:54:37
很高興。 – 2014-09-11 07:14:42