2016-06-29 21 views
1

私は、各顧客が毎日どのくらい費やしているかを見ることができるように、左側に顧客を、上部に日付を入れたピボットテーブルを作成しています。私は全く新しいので、インターネットの助けを借りて、私は動作するコードを組み立て、私にピボットテーブルを与えました。SQL Serverピボットテーブル注文句ミステリー

問題は日付がランダムな順序であることです。フレーズで注文すると、インライン関数やビューでTopまたはOffsetを使用する必要があるというエラーが表示されます。

列を並べ替えるにはどうすればよいですか?

私のコードを改善するためのご意見は、非常に高く評価されます。私のDL_Dailyテーブルには、その顧客の顧客番号、その日付の顧客の総売上高が表示されます。

SELECT * INTO #DailyReport 
FROM 
(SELECT customer,salesdate [DATE], salesamt from DL_Daily where salesdate 
    between '2016/05/01' and '2016/05/31') TAB 


SELECT * INTO #FileDates 
FROM 
(  
SELECT distinct salesdate [DATE] from DL_Daily where salesdate between 
    '2016/05/01' and '2016/05/31' 

) TAB 


DECLARE @cols NVARCHAR (MAX) 


SELECT @cols = COALESCE (@cols + ',[' + CONVERT(NVARCHAR, [DATE], 106) + ']', 
      '[' + CONVERT(NVARCHAR, [DATE], 106) + ']') 
      FROM (SELECT DISTINCT [DATE] FROM #DailyReport) PV 


PRINT @cols 

--Now pivot it 

DECLARE @query NVARCHAR(MAX) 
SET @query = '   
      SELECT * FROM 
     (
      SELECT * FROM #DailyReport 
     ) x 
     PIVOT 
     (
      SUM(salesamt) 
      FOR [DATE] IN (' + @cols + ') 
     ) p  

     '  
EXEC SP_EXECUTESQL @query 

DLデイリーサンプルデータ:

Customer Date Sales 
1  5/1/2016 520.75 
1  5/2/2016 501.75 
2  5/1/2016 15.75 
3  5/1/2016 150.75 
3  5/2/2016 507.35 
3  5/3/2016 530.75 
1  5/3/2016 250.75 

Results 

Customer 5/1  5/3  5/2 

1   520.75  250.75  501.75 
2   15.25 
3   150.75  530.75  507.35  

望ましい結果:列がこの順序order byが動作するはず5/1 5/2 5/3

+0

ショーサンプルデータ、現在の結果と欲望の出力形式111てみてください。 [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –

+0

私は質問を改善しました。私の問題について何か提案がありますか? – Missy

+0

はい、注文してみるといいですか?コメントコードのように、どこで試してみましょうか? –

答えて

1

になるように。また、代わりに106

SELECT @cols = COALESCE (@cols + 
         ',[' + CONVERT(NVARCHAR, [DATE], 111) + ']', 
         '[' + CONVERT(NVARCHAR, [DATE], 111) + ']') 
FROM ( SELECT DISTINCT [DATE] 
     FROM #DailyReport 
    ) PV 
ORDER BY [DATE] 
+0

ありがとう、ファン。私は他のすべての場所でそれを試しました。私はそこでそれを試したと思ったが、私はそうは思わない。また、日付のおかげで、ありがとう。 – Missy