1
我現在的理解是,它是不可能有幾個聚集 - 比如下面的例子附加SUM(Measure2):PIVOT和SQL Server的幾個聚集2014
IF OBJECT_ID('tempdb..#Dim1') IS NOT NULL DROP TABLE #Dim1
IF OBJECT_ID('tempdb..#Dim2') IS NOT NULL DROP TABLE #Dim2
IF OBJECT_ID('tempdb..#Facts') IS NOT NULL DROP TABLE #Facts
CREATE TABLE #Dim1
(
Id INT IDENTITY(1,1),
DimName NVARCHAR(100)
)
CREATE TABLE #Dim2
(
Id INT IDENTITY(1,1),
DimName NVARCHAR(100)
)
CREATE TABLE #Facts
(
Id INT IDENTITY(1,1),
Dim1Id INT,
Dim2Id INT,
Measure1 FLOAT,
Measure2 FLOAT
)
INSERT INTO #Dim1
SELECT N'Dim1Name1'
UNION ALL
SELECT N'Dim1Name2'
UNION ALL
SELECT N'Dim1Name3'
INSERT INTO #Dim2
SELECT N'Dim2Name1'
UNION ALL
SELECT N'Dim2Name2'
INSERT INTO #Facts
SELECT 1, 2, 2, 10
UNION ALL
SELECT 1, 2, 10, 3
UNION ALL
SELECT 1, 1, 1, 56
UNION ALL
SELECT 2, 1, 5, 4
UNION ALL
SELECT 2, 2, 4, 4
UNION ALL
SELECT 3, 1, 4, 1
UNION ALL
SELECT 3, 1, 20, 56
;WITH CTE1 AS
(
SELECT
Facts.Measure1,
Dimensions1.DimName AS DimName1,
Dimensions2.DimName AS DimName2
FROM #Facts AS Facts
INNER JOIN #Dim1 AS Dimensions1 ON Facts.Dim1Id = Dimensions1.Id
INNER JOIN #Dim2 AS Dimensions2 ON Facts.Dim2Id = Dimensions2.Id
)
SELECT
*
FROM CTE1
PIVOT
(
SUM(Measure1)
FOR DimName2
IN([Dim2Name1], [Dim2Name2])
) AS X;
這是真正的情況和我是否必須對這些情景使用舊的'MAX CASE'方法?
@TT thanks - shame) - : – cs0815