Domanda

C'è un modo per usarne uno CASE istruzione e restituire 2 valori diversi?

La query seguente ha 2 CASE dichiarazioni con le stesse condizioni.

select  case when DA.value = 1 
            then da.Good else da.Bad end as Foo,
        case when DA.value = 1 
            then ot.Good else ot.Bad end as Bar,
from    someTable DA (nolock)
        join otherTable OT (nolock) on OT...
where   ...

C'è comunque, per specificarlo CASE dichiarazione una volta?
in modo che non sia necessario mantenerli entrambi CASE istruzioni in sincronia ogni volta che la condizione cambia?

È stato utile?

Soluzione

Non c'è modo di fare quello che stai descrivendo.Non solo la tua istruzione case è diversa per entrambi i casi, ma stai restituendo valori da tabelle totalmente diverse in ciascun caso.

Altri suggerimenti

Non sono sicuro che questo sia ciò di cui hai bisogno, ma puoi fare combinazioni come:

select
   case
      when da.value = 1 and ot.attributeValue = 1 then ot.good
      when da.value = 2 and ot.attributeValue = 3 then ot.good
      ...
      else ot.bad
   end Result
from
   someTable DA

   JOIN otherTable OT
      on (ot.id = da.id)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top