1

ストアド プロシージャの途中に、次のコード スニペットがあります。

case
  when l.codeleasestatuscode = '5' and priorleaseid is null 
  and l.leaid in(select col1 from Waitlisthousehold)
then '2'
else l.codeleasestatuscode
end

ただし、Waitlisthousehold テーブルから選択する必要がある最終条件には問題があります。すべてのデータベースにそのテーブルがあるわけではありません。そのため、テーブルが存在するときに最後の条件を含める必要があります。しかし、これをやろうとするとエラーが発生します:

case
when l.codeleasestatuscode = '5' and priorleaseid is null
IF EXISTS(select * from information_schema.tables where table_name='WaitlistHousehold')
  begin
    and l.leaid in(select col1 from Waitlisthousehold)
  end
then '2'
else l.codeleasestatuscode
end

では、どうすれば正しくできますか?

このスニペットは from ステートメント内にあります (from table1 a join table2 b on a.id=b.id and case when..)

4

2 に答える 2

0

そのような select ステートメント内に if を追加することはできません。あなたはこれを行うことができます:

IF EXISTS(select * from information_schema.tables where table_name='WaitlistHousehold')
  BEGIN
  SELECT whatever,
  case
  when l.codeleasestatuscode = '5' and priorleaseid is null
    and l.leaid in(select col1 from Waitlisthousehold)
  then '2'
  else l.codeleasestatuscode
  end AS whatever1
  FROM wherever
  END
ELSE
  BEGIN
  SELECT whatever,
  case
  when l.codeleasestatuscode = '5' and priorleaseid is null
  then '2'
  else l.codeleasestatuscode
  end AS whatever1
  FROM wherever
  END
于 2013-04-18T04:17:59.247 に答える