「SQL Server - 副問い合わせ(サブクエリ)」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
56行目: 56行目:
<br>
<br>
==== 相関サブクエリ (外部クエリの値を参照) ====
==== 相関サブクエリ (外部クエリの値を参照) ====
* サブクエリで外部クエリのテーブル (t1) を参照している。
*: t2.Date < t1.Date
* サブクエリが外部クエリの各行に対して実行される。
* スカラサブクエリとして使用している。
*: 単一の値を返す。
<br>
# 外部クエリがT_Sampleテーブルの各レコード (t1) を処理する。
# 各レコードに対して、その行の日付より前の全ての売上の平均を計算する。
# 結果として、各レコードの名前、日付、売上、その日付以前の平均売上が表示される。
<br>
これは時系列分析でよく使用されるパターンであり、各時点での過去の平均値を計算するものである。<br>
<br>
  <syntaxhighlight lang="sql">
  <syntaxhighlight lang="sql">
  -- 各レコードより前の日付の平均売上を計算
  -- 各レコードより前の日付の平均売上を計算
63行目: 75行目:
         WHERE t2.Date < t1.Date) as PriorAvgSales
         WHERE t2.Date < t1.Date) as PriorAvgSales
  FROM T_Sample t1;
  FROM T_Sample t1;
</syntaxhighlight>
<br>
* サブクエリで外部クエリのテーブル (t1) を参照している。
*: t2.Sales = t1.Sales
* サブクエリが外部クエリの各行に対して実行される。
* EXIST句を使用している。
<br>
<syntaxhighlight lang="sql">
-- 売上が存在するレコードを取得
SELECT * FROM T_Sample t1
WHERE EXISTS (
    SELECT 1 FROM T_Sample t2
    WHERE t2.Sales = t1.Sales
);
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
72行目: 98行目:
     SELECT Sales FROM T_Sample  
     SELECT Sales FROM T_Sample  
     WHERE Sales > 150
     WHERE Sales > 150
);
</syntaxhighlight>
<br>
<syntaxhighlight lang="sql">
-- 売上が存在するレコードを取得
SELECT * FROM T_Sample t1
WHERE EXISTS (
    SELECT 1 FROM T_Sample t2
    WHERE t2.Sales = t1.Sales
  );
  );
  </syntaxhighlight>
  </syntaxhighlight>