2

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

誰かが私にそれの正確な構文を教えてもらえますか?前もって感謝します。

4

1 に答える 1

2

条件が複雑な場合は、サブクエリに移動できます。そうすれば、列ごとに繰り返す必要はありません。

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
于 2013-01-11T09:44:16.027 に答える