Transact-SQL のWITH句をFROMで使いたい

WITHを使うとSELECT中に出てくる一時テーブル名を使い回せます。

そこで、WITH を使った SELECT の結果テーブル自体を FROM で使いたいと思い次のような、

SELECT
  *
FROM (
  WITH HOGE(FUGA) AS (
    ...
  )
  SELECT
    ...
) AS T
...

なんて、SQLを投げると

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

と怒られてしまいます。セミコロンつけたら前のステートメントと分かれてしまうので意味がありません。

これ解決できそうな気もするんですが、見つからない(WITH句って検索キーワードとして使いにくいんですよね)ので、ストアドにしました。SQL Serverだと最後にSELECTされた集合がそのまま帰ってくるので、ストアドの本文をWITH句を使ったSELECTのみにしてしまえば、表として使えます。今回は結果をINSERTしたかったのでストアドでとりあえず回避できました。