create table Projectdata
(
ProjectId INT,
ProjectName varchar(50),
AssociateCount INT,
Technology varchar(150),
ReportMonth INT,
Reportyear INT
)
insert into Projectdata values (111, 'ABC', 2, '.NET', 1, 2014)
insert into Projectdata values (112, 'DEF', 3, '.NET', 1, 2014)
insert into Projectdata values (113, 'XYZ', 5, 'JAVA', 1, 2014)
insert into Projectdata values (111, 'ABC', 3, 'JAVA', 2, 2014)
insert into Projectdata values (112, 'DEF', 2, '.NET', 2, 2014)
insert into Projectdata values (113, 'XYZ', 5, 'JAVA', 2, 2014)
insert into Projectdata values (112, 'DEF', 1, 'JAVA', 3, 2014)
insert into Projectdata values (113, 'XYZ', 5, 'JAVA', 3, 2014)
Select * from Projectdata
提供
我编写了动态数据透视查询,但无法以所需格式查看数据。
发布我的动态查询和输出
DECLARE @outputStatus nvarchar(max)
, @pivotlistStatus VARCHAR(MAX)
, @pivotlistScore VARCHAR(MAX)
SELECT
@pivotlistStatus = ISNULL(@pivotlistStatus + ',', '') + QUOTENAME(createdate1)
FROM
(
SELECT
TOP 1000 CONVERT(CHAR(3),DATENAME(MONTH, DATEADD(MONTH,ReportMonth,0) -1))+'-'+ CONVERT(VARCHAR(4),ReportYear)+'-'+'Status' as createdate1
FROM
(
SELECT
DISTINCT ReportMonth,
ReportYear
FROM
Projectdata
GROUP BY
ReportMonth,
ReportYear
)rep
ORDER BY
ReportMonth,
ReportYear
)as months1
SELECT
@pivotlistScore = ISNULL(@pivotlistScore + ',', '') + QUOTENAME(createdate1)
FROM
(
SELECT
TOP 1000 CONVERT(CHAR(3),DATENAME(MONTH, DATEADD(MONTH,ReportMonth,0) -1))+'-'+ CONVERT(VARCHAR(4),ReportYear)+'-'+'Score' as createdate1
FROM
(
SELECT
DISTINCT ReportMonth,
ReportYear
FROM
Projectdata
GROUP BY
ReportMonth,
ReportYear
)rep
ORDER BY
ReportMonth,
reportyear
)as months
SET @outputStatus = N'
SELECT
ProjectId,
ProjectName,
' + @pivotlistStatus + '
,' + @pivotlistScore +'
FROM
(SELECT
DISTINCT
ProjectId,
ProjectName,
CONVERT(CHAR(3),DATENAME(MONTH, DATEADD(MONTH,ReportMonth,0) -1))+''-''+ CONVERT(VARCHAR(4),ReportYear)+''-''+''Status'' AS CreatedateStatus ,
CONVERT(CHAR(3),DATENAME(MONTH, DATEADD(MONTH,ReportMonth,0) -1))+''-''+ CONVERT(VARCHAR(4),ReportYear)+''-''+''Score'' AS CreatedateScore ,
AssociateCount,
Technology
FROM
Projectdata
) pvtunion
PIVOT ( MAX(Technology) FOR CreatedateStatus IN (' + @pivotlistStatus + ') ) AS PVTstatus
PIVOT ( SUM(AssociateCount) FOR CreatedateScore IN (' + @pivotlistScore + ') ) AS PVTScore
ORDER BY ProjectId'
EXEC sp_executesql @outputStatus
但我需要一行中的一个项目数据...我可以看到结果为8行,但我需要3行中的输出,如下
可能会有人帮助我.......