2012-01-24 13 views
-2

SQL Server 2005のビューでorder by句を使用できますか?SQL Server 2005のビューでorder by句を使用できます

CREATE VIEW vw_authors 

    AS 

    SELECT TOP 10 PERCENT * 

    FROM dbo.authors 
    Group by au_id 
    ORDER BY au_fname 
+1

試しましたか? –

+0

「ORDER BY句は、TOPやFOR XMLも指定されていない限り、ビュー、インライン関数、派生テーブル、サブクエリ、共通テーブル式では無効です」などのエラーが表示されます。 –

+0

なぜビューで 'order by'を使いたいのですか?あなたは何を達成したいですか? –

答えて

4

はい、いいえ。ビュー自体にorder byを使用して順序を指定することはできません。 は、top 10などの行選択に使用できます。

ビュー定義にSELECT句は以下を含むことができません:MSDN online docsから
          COMPUTE又はCOMPUTE BY句。
          ORDER BY句、SELECT声明(a)はの選択リストのTOP句もある場合を除き、
          INTOキーワード;
          OPTION句;
         一時テーブルまたはテーブル変数への参照。

(A)ORDER BY句は、ビュー定義にTOP句によって返される行を決定するためにのみ使用されます。 ORDER BY句は、照会自体でORDER BYが指定されていない限り、ビューの照会時に順序付き結果を保証するものではありません。

2

はいできます。

CREATE VIEW vw_authors 

AS 

SELECT TOP 10 PERCENT * 

FROM dbo.authors 

WHERE au_fname='John' 

ただし、ORDER BYは無効です。ビューは動的な結果セットを作成し、テーブルと同じ方法で照会できます。その後、ORDER BYすることができますビューを照会する場合:

SELECT au_fname 
FROM vw_authors 
ORDER BY au_fname 
+0

私はすでに実装されています。私は –

+1

'ORDER BY'についての言い回しが' TOP 10 PERCENT'が何を指しているのかを定義しているので、OPのクエリで有効です。それは、そのビューに対する選択からの結果が特定の順序で出力されることを意味すると解釈すべきではありません。 –

+0

良い点@MartinSmith私はそれを考慮しなかった – Curt

1

をここで素敵Overview of Views in SQL Server 2005です。この記事で触れたように、ビューは、ORDER BYを使用してビューのクエリを効率的に並べ替えることができるようにインデックスを付けることができます。また、Microsoft article on indexed viewsを参照してください。

要約答え:いいえ、ビューを作成するときにORDER BYを使用することはできませんが、インデックスビューをし、そのビューのクエリに速いORDER BYを使用することができます。

これが役に立ちます。あなたのプロジェクトで幸運:-)

関連する問題