2016-07-20 20 views
0

私は日付の上にピボットテーブルを作成しています。その一環として、IN句を一時テーブル#FileDatesから取得しています。ここでは、最も古いものから最も新しいものまでの日付を取得するコードがあります。私はそれを最も古いものから最新のものにしたいと思っています。SQL照会日付ソート順が正しくありません

SELECT * INTO #FileDates 
FROM 
    (SELECT distinct DLDate [DATE] from Daily where DLDate between @begin31 and @end ) TAB; 

これが続いている:あなたはインラインSQLにおけるによって順序を持つことはできませんので、私は私のサブクエリでORDER BY句を置くことを試みたが、それはうまくいきませんでした

DECLARE @cols NVARCHAR (MAX) 

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

。私はそれを書き直してみました:

SELECT distinct DLDate [DATE] into #FileDates 
from Daily where DLDate between @begin31 and @end order by Date desc 

そして、実行したコマンドが、日付が正しい順序ではありませんでした。助けてください。

答えて

0

私は幽霊の提案を取ったので、私の列のための私の選択のコードは今出て途中でそれを命じた:

SELECT @cols = COALESCE (@cols + ',[' + CONVERT(NVARCHAR, [DATE], 106) + ']', 
     '[' + CONVERT(NVARCHAR, [DATE], 106) + ']') 
     FROM (SELECT DISTINCT [DATE] FROM #FileDates) PV order by [DATE] desc 
+1

'@ cols'はスカラー変数です。複数の行からどの値が割り当てられるかは不明です。 'order by 'を使って' top 1'を使って確実にする。 –

0

TOPをお持ちの場合はご注文いただけます。私はあなたが1000万行を持っているとは思わないでしょう。

SELECT * INTO #FileDates 
FROM (
    SELECT distinct TOP 999999999 DLDate [DATE] 
    from Daily 
    where DLDate between @begin31 and @end 
    ORDER BY DLDate DESC 
) TAB; 

しかし、ここでは、テンポラリテーブルが明示的に宣言されていればそれを書いています。

INSERT INTO #FileDates 
    SELECT distinct DLDate [DATE] 
    from Daily 
    where DLDate between @begin31 and @end 
    ORDER BY DLDate DESC 
+0

良い考えが、どちらも働きました。 AscとDescは私に同じ結果を与えました - >最も古いものから最も新しいもの。 – Missy

+0

@Missyデータが特定の順序でテーブルに挿入されただけで、それが読み返してもそのように表示されるわけではありません。あなたが#FileDatesに対して選択しているときは、あなたも同様にそれを注文する必要があります。 – UnhandledExcepSean

+0

オカイ - それを確認します。あなたの助けをありがとう、ゴースト:)ハンドルを愛する。 – Missy

関連する問題