pl / sql case语句导致修改两个字段

时间:2014-01-08 02:30:03

标签: sql oracle

我有一个select语句。当一个条件影响一个字段时,这就是它通常的工作方式:

select 
  case when <condition 1>
  then '1'
  end as field1
, case when <condition 2>
  then '2'
  end as field2

可以最终确定一个字段(例如field1或field2)。但如果条件应该影响两个领域呢?就我所见,我无法使用当前的选择结构。

我是否需要重复该条件(因此相同的条件会在两个单独的字段中产生影响(如下所示)?

select 
  case when <condition 1>
  then '1'
  end as field1
, case when <condition 1>
  then '2'
  end as field2

或者第二个字段是否需要在完全不同的if-then语句中处理?关于如何处理这种情况的任何建议?我是PL / SQL的新手。

2 个答案:

答案 0 :(得分:2)

为了创建两个不同的变量,您需要重复case语句。

你的第二个提法有两个case陈述是正确的方法。

答案 1 :(得分:1)

SELECT to_number(to_char(marriage_date,&#39; YYYY&#39;))年,

count(id_marriage)NUMBER_OF_MARRIAGES,

        sum(CASE WHEN REASON_OF_EXPIRATION != 'Death' THEN 1

                 ELSE 0

       end  ) NUMBER_OF_DIVORCES,

sum(case when REASON_OF_EXPIRATION = 'Death' THEN 1

else 0

end) NUMBER_OF_Deaths

FROM marriage GROUP BY to_number(to_char(marriage_date,&#39; YYYY&#39;));第二种方法是正确的,请找一个示例代码。