2017-04-13 15 views
0

私のクエリはピボットテーブルを返します。最初の列(nummnth)には、Jan、Feb、Marの月の01,02,03などのテキスト値が含まれています。問題は、 02 01,02,03の代わりに。SQL Serverピボット注文の問題

どうすればこの問題を解決できますか?

クエリは次のとおりです。SQL-Serverでの

select [nummnth] ,[mnth],[Business Fixed Score],[Business Fixed 
    Sessions],[Business Mobile Score],[Business Mobile Sessions],[Business 
    Merged Score],[Business Merged Sessions] from (Select [nummnth], 
    [Mnth],C.* from (
    SELECT [Service],nummnth,mnth,b.A2 as [User_Score],b.A2_Sessions as 
    [Sessions_Count] FROM [QTDB].[dbo].[QTD_BOX_BUS_MERGED_CP] as [b] where 
    YR=2017 
    and [service] = 'Business Fixed' and Agent='ANAME' 
    Union 
    SELECT [Service],nummnth,mnth,b.A2 as [User_Score],b.A2_Sessions as 
    [Sessions_Count] 
    FROM [QTDB].[dbo].[QTD_BOX_BUS_MERGED_CP] as [b] where YR=2017 and 
    [service] = 'Business Mobile' and Agent='ANAME' 
    UNION all 
    SELECT 'Business Merged' as [Service] ,nummnth,mnth,b.A2 as 
    [User_Score],b.A2_Sessions as [Sessions_Count] 
    FROM [QTDB].[dbo].[QTD_BOX_BUS_AGENT_MNTH_MERGED] as [b] where YR=2017 
    and Agent='ANAME') A 
    Cross Apply (Values (A.[Service]+' Score', 
    cast(A.[User_Score] as float)),(A.[Service]+' Sessions',cast(A. 
    [Sessions_Count] as float))) C (Item,Value)) R Pivot (
    sum(Value) For [Item] in ([Business Fixed Score], 
    [Business Fixed Sessions], 
    [Business Mobile Score],[Business Mobile Sessions], 
    [Business Merged Score],[Business Merged Sessions])) PV 

答えて

1

暗黙の順序はありません!なし、決して...

と言うこともできません問題は01,03,02の代わりに01,03,02です。次回の呼び出しは、別の方法で返される可能性があります。

順序を保証する唯一の方法は、一番外側のクエリのORDER BYです。

最後の行にORDER BY [nummnth]を追加して、結果を確認してください。

+0

私はORDER BY [nummnth]を、PVの後の最後を除いて、クエリのどこでも試しました。今は完璧に動作します。私はとても馬鹿だと感じますが、それは「極端なプログラミング」でした。 –

+0

@AndyL。私はあなたの問題を解決することができてうれしいです。そして、決して気にしないで、みんな愚かな気持ちになるでしょう:-D – Shnugo