2016-04-03 13 views
-1

Ich habe Tabellenname ist SpecailUserrate diese Datensätze enthaltenSelect-Anweisung erhalten einen Datensatz

USER_ID NAME FromCountry ToCountry Rate 
----------------------------------------------  
1   xyz  null   null  0.75 
1   xyz  1   null  0.80 
1   xyz  null   2  0.81 

ich die SQL-Anweisung benötigen 1 Datensatz

example user 1 want to use special rate depend on FromCountry or ToCountry 

, wenn der Benutzer 1 von Land 1 special zurückzukehren hat Rate wird 0.80 verwenden, wenn nicht wird Standardrate 0,75

Hilfe verwenden?

+1

teilen, was Sie versucht haben? – Sanj

+0

mit was (Variable) versuchen Sie FromCountry/ToCountry zu finden? –

+0

Benutzereingabe Variable –

Antwort

0

Ich bekomme die Frage nicht richtig. Aber ich denke, der Schlüssel zur Lösung ist EXISTS.

Etwas, das wie dieses hier

select * from country where FromCountry=1 
union 
select * from country where not exists(select * from where FromCountry=1) and ToCountry=2 
union 
select * from country where not exists(select * from where FromCountry=1 or ToCountry=2) and FromCountry is NULL; 
0

aussieht, ist ein Weg, um die Antwort der Bereitstellung:

select coalesce(c1.rate, def.rate) as rate 
from 
    (select user_id, rate 
     from Special_User_rate 
     where fromcountry is null and tocountry is null) def 
    left join 
     (select user_id, rate 
      from Special_User_rate 
      where fromcountry = 1) c1 
    on def.user_id = c1.user_id 
/

Es ist nicht ideal, weil es schwer ist, einen Wert für fromcountry in die Unterabfrage zu injizieren .

Verwandte Themen