私は6つのテーブルを持っています:LS_CLIENT_INSEE_A、B、C、など各テーブルはINSEEという1つのフィールドしか含んでいません。SQL CASE SELECT return char
入力がこれらのテーブルのいずれかに存在するかどうかを知りたいだけで、テーブル名(A、B、Cなど)から対応する文字を返すだけです。
この書き換えるために、なぜ他があります:
@TheInsee int
AS
BEGIN
declare @Zone char(1)
declare @CountA int
declare @CountB int
declare @CountC int
declare @CountD int
declare @CountF int
declare @CountP int
SELECT @CountA = COUNT(*) FROM LS_CLIENT_INSEE_A WHERE NO_INSEE = @TheInsee
SELECT @CountB = COUNT(*) FROM LS_CLIENT_INSEE_B WHERE NO_INSEE = @TheInsee
SELECT @CountC = COUNT(*) FROM LS_CLIENT_INSEE_C WHERE NO_INSEE = @TheInsee
SELECT @CountD = COUNT(*) FROM LS_CLIENT_INSEE_D WHERE NO_INSEE = @TheInsee
SELECT @CountF = COUNT(*) FROM LS_CLIENT_INSEE_F WHERE NO_INSEE = @TheInsee
SELECT @CountP = COUNT(*) FROM LS_CLIENT_INSEE_P WHERE NO_INSEE = @TheInsee
set @Zone =
CASE
WHEN @CountA > 0 THEN 'A'
WHEN @CountB > 0 THEN 'B'
WHEN @CountC > 0 THEN 'C'
WHEN @CountD > 0 THEN 'D'
WHEN @CountF > 0 THEN 'F'
WHEN @CountP > 0 THEN 'P'
END
END
は、クエリの上にこれを達成するための最良の方法ですか?事前に
おかげで、あなたを、 STEV
あなたはすべての@CountX
変数を取り除くと取得することができ
このデータベースを正規化することをお勧めします。 – Simon