0

SQLで3つのテーブルで構成される単純なビューを作成しました。

右クリックして[デザイン]を選択し、オブジェクトエクスプローラーテーブルでカスタムビューを変更しました。フィールドにsortbyascを追加しました。

問題は、変更がビューの外に反映されないことです。ビューを保存し、[ビューを開く]を選択した後、ソートは出力に表示されません。

では、ここで何が起こっているのでしょうか。

4

3 に答える 3

3

技術的には、並べ替えを にベイク処理することは可能VIEWですが、お勧めしません。代わりに、次のようにビューから選択するときに並べ替えを適用する必要があります。

Select ...
From MyView
Order By SortByCol ASC

本当に知りたい場合 (ただし、これは強くお勧めしません)、TOP コマンドを使用して、ビューでの並べ替えの制限を回避できます。

Select TOP 100 PERCENT * Col1, Col2....
From Table1
Order By SortByCol ASC
于 2010-04-09T22:21:05.750 に答える
0

通常、ビューは並べ替えることができません。

(他の人が述べたように、それを行うにはハックがありますが、SQLでビュー定義を記述するのではなくビジュアルクエリデザイナーを使用しているため、そのハックを実装するのはおそらく難しいでしょう。)

ビューを実際に「変更」したのではなく、EMがビューから選択するために使用していたSELECTステートメントを変更しただけです。ソート設定はビュー定義に保持されません。

タブを閉じると、EMはそのビューの並べ替え設定を記憶しないため、ビューを再度開くと、SQLServerが決定した順序で表示されます。

于 2010-04-09T22:16:16.350 に答える
0

そうみたいです :

SQL Server 2000、SQL 2005、および SQL 2008 のビュー定義の SELECT 句には制限があります。SELECT ステートメントの選択リストに TOP 句も含まれていない限り、CREATE VIEW ステートメントに ORDER BY 句を含めることはできません。ORDER BY 句は、ビュー定義の TOP 句によって返される行を決定するためにのみ使用されます。ORDER BY 句は、クエリ自体で ORDER BY も指定されていない限り、ビューがクエリされたときに順序付けされた結果を保証しません。

適用する必要がある修正プログラムもあります。その後、上位 100% を使用して、順序順が機能することを確認する必要があります。

HTH

于 2010-04-09T22:23:13.967 に答える