SQLのcase..whenステートメントで単一の条件が真の場合に複数のステートメントを表示したい。
例えば:
case when (condition is true) then
print "A"
print "B"
.
.
.
.
print "Z"
when (condition2 is true) then
print "Z"
print "Y"
.
.
.
.
print "A
end
誰かが私にそれの正確な構文を教えてもらえますか?前もって感謝します。
条件が複雑な場合は、サブクエリに移動できます。そうすれば、列ごとに繰り返す必要はありません。
select case when Condition = 1 then 'A' else 'B' end
, case when Condition = 1 then 'C' else 'D' end
, case when Condition = 1 then 'E' else 'F' end
, ...
from (
select *
, case
when ... complex condition ... then 1
else 0
end as Condition
from YourTable
) as SubQueryAlias
もう1つのオプションは、CTEとの結合です(すべてのデータベースで使用できるわけではありません)。これにより、なしcase
で両方の式を記述でき、CTEのおかげで条件が繰り返されません。
; with CteAlias as
(
select *
, case
when ... complex condition ... then 1
else 0
end as Condition
from YourTable
)
select 'A', 'C', 'E'
from CteAlias
where Condition = 1
union all
select 'B', 'D', 'F'
from CteAlias
where Condition = 0