我剛開始使用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