愚者の経験

「また今度」はほとんどこない

月別アーカイブ: 7月 2014

[SQL Server][SQL][Tips]cteを使おう!としてみたが難しい。その1

SQL Serverをお使いの方「cte」をご存知だろうか?

この「cte」自体は
「テーブルに別名をつけることができ、1ステートメント内であれば何度も参照できる」
というものです。Common Table Expression(共通テーブル式)
(例)

;with cte (nb,txt) as (
    select 0,'aaa' union all
    select 1,'bbb' union all
    select 2,'ccc' union all
    select 3,'111'
)
select count(*) as countcte
	,(select max(nb) from cte) as maxnb
	,(select min(nb) from cte) as minnb
	,(select max(txt) from cte) as maxtxt
	,(select min(txt) from cte) as mintxt
from cte

ぱっと思いつく用途としては「自己結合の簡略化」です。
複雑なクエリで累計するときなど自己結合が必要な場合にSQLが冗長にならずに済む可能性があります。
これはAccessの参照クエリ、SQL Serverのビューを一時的に作るような使い方になりますので
それほど難しい使い方ではないのですが、cteにはほかにも独自(?)の機能があります。

それが「再帰」です。
調べても「なるほど、わからん」という感じにしかならないです…。少しわかりかけてきたので
他のかたのために、主に自分のためにメモしておきます。

広告