如何在SELECT中多次消除重复大小写或解码语句?

Jam*_*ore 0 sql oracle

例如:

SELECT a,
  IF (c = DECODE(b, "foo1", "bar1", "foo2", "bar2") THEN c ELSE 0),
  IF (d != DECODE(b, "foo1", "bar1", "foo2", "bar2") THEN d ELSE 2),
  IF (e = DECODE(b, "foo1", "bar1", "foo2", "bar2") THEN e ELSE 5)
FROM x
Run Code Online (Sandbox Code Playgroud)

似乎应该有一个不那么重复的方式来做到这一点......

Yah*_*hia 5

使用

SELECT 
a,
IF (c = b THEN c ELSE 0),
IF (d != b THEN d ELSE 2),
IF (e = b THEN e ELSE 5)
FROM
(SELECT a, DECODE(b, "foo1", "bar1", "foo2", "bar2") b, c, d, e from x);
Run Code Online (Sandbox Code Playgroud)