我的下表包含以下列。
-------------------------------------
Column1 | Column2 | TotalCount
--------------------------------------
1 1 40
1 2 50
2 1 10
2 2 60
另外,我有另一个与Column1相关的表,其中1是X,2是Y,而Column2则相同,其中1是A,2是B
我试图想出一个基本上给我一些看法的SQL语句......
--------------------
ColumnName | A | B
--------------------
X 40 50
Y 10 60
知道如何实现这一目标?我一直试图在没有运气的情况下调整数据。
谢谢!
答案 0 :(得分:1)
完整的工作示例:
DECLARE @DataSource TABLE
(
[Column1] TINYINT
,[Column2] TINYINT
,[TotalCount] TINYINT
);
INSERT INTO @DataSource ([Column1], [Column2], [TotalCount])
VALUES (1, 1, 40)
,(1, 2, 50)
,(2, 1, 10)
,(2, 2, 60);
SELECT *
FROM
(
SELECT IIF([Column1] = 1, 'X', 'Y') AS [ColumnName]
,IIF([Column2] = 1, 'A', 'B') AS [Column2]
,[TotalCount]
FROM @DataSource
) DS
PIVOT
(
MAX([TotalCount]) FOR [Column2] IN ([A], [B])
) PVT;
答案 1 :(得分:1)
使用条件聚合:
WITH tbl AS(
SELECT * FROM ( VALUES
(1, 1, 40), (1, 2, 50),
(2, 1, 10), (2, 2, 60)
)t(Column1, Column2, TotalCount)
)
SELECT
ColumnName = CASE WHEN Column1 = 1 THEN 'X' ELSE 'Y' END,
A = MAX(CASE WHEN Column2 = 1 THEN TotalCount END),
B = MAX(CASE WHEN Column2 = 2 THEN TotalCount END)
FROM tbl
GROUP BY Column1
结果:
ColumnName A B
---------- ----------- -----------
X 40 50
Y 10 60