📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == <code>WITH</code>句があるSQL文は、その後に記述されている<code>SELECT</code>文よりも先に実行される。<br> <code>WITH</code>句は…」 |
|||
| 29行目: | 29行目: | ||
<br><br> | <br><br> | ||
== | == WITH句を使用する場合 == | ||
下表に示すテーブルがある。<br> | 下表に示すテーブルがある。<br> | ||
<center> | <center> | ||
| 64行目: | 64行目: | ||
Name Date Sales | Name Date Sales | ||
A 20210101 200 | A 20210101 200 | ||
<br> | <br><br> | ||
== WITH句の値が複数の場合 == | |||
<code>WITH</code>句の値が複数でも指定できる。<br> | <code>WITH</code>句の値が複数でも指定できる。<br> | ||
以下の例では、<code>WITH</code>句で複数の値を取得した後、8行目の<code>IN</code>句の条件にしている。<br> | 以下の例では、<code>WITH</code>句で複数の値を取得した後、8行目の<code>IN</code>句の条件にしている。<br> | ||
| 82行目: | 84行目: | ||
A 20210101 200 | A 20210101 200 | ||
B 20210102 150 | B 20210102 150 | ||
<br><br> | |||
== WITH句を使用しない場合 == | |||
下表に示すテーブルがある。<br> | |||
<center> | |||
{| class="wikitable" style="background-color:#fefefe;" | |||
|+ T_Sampleテーブル | |||
|- | |||
| style="background-color:#66CCFF;" | Name | |||
| style="background-color:#66CCFF;" | Date | |||
| style="background-color:#66CCFF;" | Sales | |||
|- | |||
| A || 20210101 || 200 | |||
|- | |||
| B || 20210102 || 150 | |||
|- | |||
| C || 20210103 || 100 | |||
|} | |||
</center> | |||
<br> | |||
<code>FROM</code>句の箇所にある副問い合わせを使用して、レコードを抽出する。<br> | |||
<syntaxhighlight lang="sql"> | |||
SELECT b.Name, b.Date, b.Sales | |||
FROM | |||
( | |||
SELECT AVG(Sales) AS SalesAverage FROM T_Sample | |||
) a, T_Sample b | |||
WHERE a.SalesAverage < b.Sales; | |||
</syntaxhighlight> | |||
<br> | |||
4行目は、Salesカラムの平均を求める副問い合せであり、副問い合わせの結果をテーブル(ビュー)のように使用している。<br> | |||
1つ目の<code>FROM</code>句の中に、SQL文が記述されているため、<code>WITH</code>句より可読性が落ちている。<br> | |||
<br> | |||
結果は、以下の通りである。<br> | |||
Name Date Sales | |||
A 20210101 200 | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:SQL_Server]] | [[カテゴリ:SQL_Server]] | ||