Vinnaren i pepparkakshustävlingen!
2008-01-21, 12:01
  #1
Medlem
octanes avatar
Jag jobbar i MS sql 2005.
Jag har ett antal tabeller vars innehåll inte får ändras.
Antag att jag gör:
Kod:
select id,namn,A.pris from A inner join B on A.id=B.id inner join C on B.extraid=C.extraid

Och då får jag en fin tabell, men vissa värden på "pris" är <NULL>, dessa kan man ibland ersätta med något vettigt. Jag får ut vad man ska ersätta det med genom att ta
Kod:
selct id,D.pris from A inner join D on A.id=D.id

Hur gör jag liksom att "om det för ett visst id är så att pris=null, försök hitta ett pris med den andra SQL satsen, finns det inte där heller får värdet vara null"
Citera
2008-01-21, 13:56
  #2
Medlem
googlevistas avatar
Kod:
select id,namn, CASE WHEN A.pris IS NULL THEN D.pris ELSE A.pris END as Pris 
from A 
  inner join B on A.id=B.id 
  inner join C on B.extraid=C.extraid 
  left outer join D on A.id=D.id

Borde funka.
Citera
2008-01-21, 14:06
  #3
Medlem
Eller COALESCE(A.pris, D.pris).
Citera
2008-01-21, 19:47
  #4
Medlem
Kod:
select id,namn,ISNULL(ISNULL(ISNULL(A.pris, B.pris), C.pris), 0) as pris from A inner join B on A.id=B.id inner join C on B.extraid=C.extraid

Ger A.pris om detta ej är NULL
annars B.pris om detta ej är NULL
annars C.pris om detta ej är NULL
annars 0
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback