菊池 Blog

移転しました 続・菊池 和彦の足跡


AILight Blogs

目次

Blog 利用状況

ニュース

移転しました http://aka-kazuk.spaces.live.com/

記事のカテゴリ

過去の記事

カテゴリ

移転先

SQL Server 2005 の共通テーブル式で・・・

With CTE名1( aaa,bbb )
as ( select 文 )

With CTE名2( aaa,bbb )
as ( select 文 )

二つ連続して CTE の定義をすると CTE2 の開始で

キーワード 'with' 付近に不適切な構文があります。このステートメントが共通テーブル式または xmlnamespaces 句の場合、前のステートメントをセミコロンで終了してください。

はい、そうですかと、CTE1の終わりに ; を入れると

';' 付近に不適切な構文があります。

んー、CTEの連続定義はできません?

できないとすげー困るのですが、何か方法ありますか?>とおりがかりのSQL神様

 

投稿日時 : 2008年6月2日 19:57

コメントを追加

# re: SQL Server 2005 の共通テーブル式で・・・ 2008/06/02 20:07 菊池

http://msdn.microsoft.com/ja-jp/library/ms175972.aspx
--
CTE の作成および使用に関するガイドライン
非再帰 CTE には、次のガイドラインが適用されます。再帰 CTE に適用されるガイドラインについては、後述の「再帰 CTE の定義と使用に関するガイドライン」を参照してください。

・CTE の後には、その CTE 列の一部または全部を参照する単一の SELECT、INSERT、UPDATE、または DELETE ステートメントを指定する必要があります。CTE は、CREATE VIEW ステートメントの中で、ビューの SELECT ステートメントの定義の一部として指定することもできます。
--

 ひゃー、できないでやんのーーーーー


With CTE_A as (...)
With CTE_B as ( select from B join CTE_A ... ) とかできるのかと思ってたーーーーーーーー

# re: SQL Server 2005 の共通テーブル式で・・・ 2008/06/02 21:14 黒龍

テーブル値関数として片方を定義しておいてもう片方から読んでやることでしょうか。

# re: SQL Server 2005 の共通テーブル式で・・・ 2008/06/03 9:00 Mr.T

>With CTE_A as (...)
>With CTE_B as ( select from B join CTE_A ... ) とか

Withを連続させて書かずにカンマで区切って、

With CTE_A as (...)
,CTE_B as ( select from B join CTE_A ... )
って書き方ならできますよ。

# re: SQL Server 2005 の共通テーブル式で・・・ 2008/06/03 9:44 菊池

お、おぉぉぉぉぉ

 おぉ、できますねー

 テーブル変数に insert ... select でCTEを平坦化してしまって一時しのぎしたけど、今度試してみますわ

# re: SQL Server 2005 の共通テーブル式で・・・ 2008/06/04 20:43 黒龍

ぬぉー知らんかった。頭を丸めたい気持ちでいっぱいです

タイトル  
名前  
URL
コメント