[SQL SERVER] 変数を使用したテーブルの利用方法

[SQL SERVER] 変数を使用したテーブルの利用方法

ちょっと便利なSQLを紹介します。
変数を使用したテーブルです。テーブル変数とでもいうのかな?
ちょっとしたテストで良く使っています。
覚えておくととっても便利です。

ブラウザで表示すると、シングルコーテションがおかしくなるかも。
コピペするときには修正してください。

--変数テーブルの作成&INSERT
declare @tbl1 table(a_cd char(9), b_kbn char(1), c_kbn int)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000001','1',0)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000010','2',1)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000020','2',1)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000030','2',1)

declare @tbl2 table(a_cd char(9), b_kbn char(1), c_kbn int)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000001','1',0)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000010','2',1)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000020','2',1)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000030','2',1)
--変数テーブルを使用する例(SELECT)
select *
from @tbl1 S1
join @tbl2 S2
on S1.A_CD=S2.a_cd
and S2.b_kbn=S2.b_kbn
--変数テーブルの値を更新する(UPDATE)
update @tbl1 set c_kbn+=1
--確認用SELECT
select * from @tbl1
--変数テーブルの値を削除する(DELETE)
delete from @tbl1 where b_kbn='1'
--確認用SELECT
select * from @tbl1

もちろん変数なので同じセッション中のみ有効です。
また、セッションが切れたら無くなります。