1. ホーム
  2. sql-server

[解決済み] シンプルに保つ、クエリで複数のCTEを行う方法

2022-03-06 04:34:01

質問

この単純な T-SQL クエリは、あるテーブルから多数のカラムを出力し、さらに他のテーブルから情報を結合しています。 関連 テーブルを使用します。

私のデータモデルは単純です。予定されているイベントがあり、参加者がいます。各イベントに参加する参加者の人数を知る必要があります。

私の解決策は、予定されているイベントをグループ化し、参加者数をカウントするCTEを追加することです。

これによって、予定されているイベントごとにその情報を結合することができるようになります。クエリをシンプルに保つことができます。

しかし、将来、単純なクエリで一時的な結果を追加でアクセスできるようにする必要がある場合、どうすればよいでしょうか。

本当は複数のCTEを持てたらいいんだけど、無理だよね?この場合、どのような選択肢がありますか?

ビューやアプリケーションデータ層で何かをすることは除外しています。私はSQLクエリを分離するのが好きなんです。

どのように解決するのか?

複数の CTE を再利用することもできます。 CTE :

WITH    cte1 AS
        (
        SELECT  1 AS id
        ),
        cte2 AS
        (
        SELECT  2 AS id
        )
SELECT  *
FROM    cte1
UNION ALL
SELECT  *
FROM    cte2
UNION ALL
SELECT  *
FROM    cte1

ただし SQL Server を再評価することがあります。 CTE のような値を使用している場合は、アクセスされるたびに、その値を変更する必要があります。 RAND() , NEWID() などの間で変化することがあります。 CTE を呼び出す。