trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

【SQL Server, SQL】削除フラグのあるテーブルの抽出条件 [初心者向けネタ]

あるレコードを表示したくなくて、削除フラグとか非表示フラグなんかが定義してあるレコードがよくあると思うんだが、そんなテーブルの抽出条件はcase句を使って以下のように簡単に書ける。
ちょっとしたTipsで知っている人も多いと思うが、意外に知らない人もいるようなので例を書いときます。

-- =============================================
-- Author:	BSS
-- Create date: 2020/01/25
-- Update date: 2020/01/25
-- Description:	部門を取得する。
-- =============================================
CREATE PROCEDURE [eigyou].[Get部門]
@削除除外	bit = 1	
AS
BEGIN

SET NOCOUNT ON;

select 部門ID, 部門名, 削除FLG
from dbo.部門
where 削除FLG = (case @削除除外 when 1 then 0 else 削除FLG end);
					
END

@削除除外が1だと削除フラグが0のレコードだけ抽出され、@削除除外が0だと削除フラグにかかわらず、全件抽出されます。
where 削除FLG = 削除FLG
という式を作っているところがポイントですね。