我刚开始使用SQL PIVOT
,并且对列的排序有问题,并且对于如何纠正它很有帮助。我在这里和其他网站上筛选了几个与PIVOT相关的帖子,但没有直接相关的东西。PIVOT中的列未按照所需的顺序排列
你会注意到我在每个查询中都添加了一个硬编码的OrderBy文件,但这并没有帮助,我认为这是皮托正在对列进行排序的[Description]字段。所以,目前的列从以下顺序从左到右显示:
[收费期],[优],[好],[无临时],[满意],[不满意],[非常好]。
相反,我需要按以下顺序:
[收费期],[无临时],[优],[非常好],[好],[满意],[不满意] 。
我开始认为它可能不是一个纯粹的关键问题 - 从来没有我可以使用一些帮助,谢谢。
存储过程是这样的:
DECLARE @cols NVARCHAR(MAX)
DECLARE @query NVARCHAR(MAX)
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT '],[' + [Description]
FROM dbo.vQualScoringGrade
ORDER BY '],[' + [Description] FOR XML PATH('')), 1,2,'') + ']'
SET @query = N'SELECT [Fee Period], ' + @cols + ' FROM
(SELECT [Award Fee Period],GradeCount, Description, Value, OrderBy FROM
dbo.vQualScoringGrade) p
PIVOT (SUM([Value]) for [Description] IN (' + @cols + ')) AS pvt ORDER BY [Fee Period]'
execute(@query)
的观点[vQualScoringGrade]哺养存储过程是这样的:
SELECT TOP (100) PERCENT [Fee Period], GradeCount, Description,
GradeCount AS Value, OrderBy
FROM (SELECT [Fee Period], 'No of Interim' AS Description, COUNT(VerNumber) AS GradeCount, 1 AS
OrderBy
FROM dbo.vQualScoringExcellent AS vQualScoringExcellent
GROUP BY GIIANumber, Description
UNION
SELECT [Fee Period], 'Excellent' AS Description, COUNT(Description) AS GradeCount, 2 AS OrderBy
FROM dbo.vQualScoringExcellent AS vQualScoringExcellent_1
GROUP BY VerNumber, Description
UNION
SELECT [Fee Period], 'Very Good' AS Description, COUNT(Description) AS GradeCount, 3 AS OrderBy
FROM dbo.vQualScoringVeryGood AS vQualScoringVeryGood
GROUP BY VerNumber, Description
UNION
SELECT [Fee Period], 'Good' AS Description, COUNT(Description) AS GradeCount, 4 AS OrderBy
FROM dbo.vQualScoringGood AS vQualScoringGood
GROUP BY VerNumber, Description
UNION
SELECT [Fee Period], 'Satisfactory' AS Description, COUNT(Description) AS GradeCount, 5 AS
OrderBy
FROM dbo.vQualScoringSatisfactory AS vQualScoringSatisfactory
GROUP BY VerNumber, Description
UNION
SELECT [Fee Period], 'Unsatisfactory' AS Description, COUNT(Description) AS GradeCount, 6 AS OrderBy
FROM dbo.vQualScoringUnsatisfactory AS vQualScoringUnsatisfactory
GROUP BY VerNumber, Description) AS QualScoringGrade
ORDER BY OrderBy
你是那个人,RBarryYoung !!!感谢您花费宝贵的时间。 – Risho