SQLで3つのテーブルで構成される単純なビューを作成しました。
右クリックして[デザイン]を選択し、オブジェクトエクスプローラーテーブルでカスタムビューを変更しました。フィールドにsortbyascを追加しました。
問題は、変更がビューの外に反映されないことです。ビューを保存し、[ビューを開く]を選択した後、ソートは出力に表示されません。
では、ここで何が起こっているのでしょうか。
SQLで3つのテーブルで構成される単純なビューを作成しました。
右クリックして[デザイン]を選択し、オブジェクトエクスプローラーテーブルでカスタムビューを変更しました。フィールドにsortbyascを追加しました。
問題は、変更がビューの外に反映されないことです。ビューを保存し、[ビューを開く]を選択した後、ソートは出力に表示されません。
では、ここで何が起こっているのでしょうか。
技術的には、並べ替えを にベイク処理することは可能VIEW
ですが、お勧めしません。代わりに、次のようにビューから選択するときに並べ替えを適用する必要があります。
Select ...
From MyView
Order By SortByCol ASC
本当に知りたい場合 (ただし、これは強くお勧めしません)、TOP コマンドを使用して、ビューでの並べ替えの制限を回避できます。
Select TOP 100 PERCENT * Col1, Col2....
From Table1
Order By SortByCol ASC
通常、ビューは並べ替えることができません。
(他の人が述べたように、それを行うにはハックがありますが、SQLでビュー定義を記述するのではなくビジュアルクエリデザイナーを使用しているため、そのハックを実装するのはおそらく難しいでしょう。)
ビューを実際に「変更」したのではなく、EMがビューから選択するために使用していたSELECTステートメントを変更しただけです。ソート設定はビュー定義に保持されません。
タブを閉じると、EMはそのビューの並べ替え設定を記憶しないため、ビューを再度開くと、SQLServerが決定した順序で表示されます。
そうみたいです :
SQL Server 2000、SQL 2005、および SQL 2008 のビュー定義の SELECT 句には制限があります。SELECT ステートメントの選択リストに TOP 句も含まれていない限り、CREATE VIEW ステートメントに ORDER BY 句を含めることはできません。ORDER BY 句は、ビュー定義の TOP 句によって返される行を決定するためにのみ使用されます。ORDER BY 句は、クエリ自体で ORDER BY も指定されていない限り、ビューがクエリされたときに順序付けされた結果を保証しません。
適用する必要がある修正プログラムもあります。その後、上位 100% を使用して、順序順が機能することを確認する必要があります。
HTH