[SQL] 2 Colums joinen, maar met voorwaarden

Pagina: 1
Acties:

  • _avalanche_
  • Registratie: Oktober 2003
  • Laatst online: 14-11 14:56
Ik weet niet of ik de vraag in het goede subforum stel, maar dan moet een mod em maar verplaatsen.

Ik heb hier een view en deze heeft meerdere columns. Nu is het zo dat column A en B niet altijd beide gevuld zijn, meestal is er maar 1 gevuld.

Dan is er nog een column C en D, deze zijn ook niet altijd gevuld. Meestal is C wel gevuld, maar als die niet gevuld is dan is D gevuld.

Wat ik nu met sql wil bereiken is dat er eigenlijk 2 Columns bij komen: E en F

E wordt gevuld met de waardes van de C en D column.

Column F moet gevuld worden met de waardes van A en B, echter als C ingevuld is wil ik de waarde uit A, en als D gevuld is wil ik de waarde uit B.

Ik heb op google gezocht naar het joinen van 2 columns, dat moet wel lukken, alleen het probleem is dat ik er niet achter kom hoe ik ervoor kan zorgen dat column F wordt gevuld met de juiste waarden.

  • IJsbeer
  • Registratie: Juni 2001
  • Niet online
Het eerste kun je doen door select c + d AS E

Voor het tweede moet je even in de case duiken: http://msdn.microsoft.com/en-us/library/ms181765.aspx

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
EDIT: sorry, verkeerd gelezen.

[ Voor 102% gewijzigd door P_de_B op 25-06-2008 12:07 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:26
Welk DBMS gebruik je ?

In geval van SQL Server:

Voor je column E kan je volgens mij met COALESCE uit de voeten.

Voor column F kan je wellicht met CASE uit de voeten (checken of C null is, indien niet, dan zet je daar A, indien wel (dan is D ingevuld), dan zet je daar B ... (wel een beetje ranzig vind ik)

dat krijg je, als je even iets anders doet voor je op submit klikt ..

[ Voor 11% gewijzigd door whoami op 25-06-2008 12:08 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:26
IJsbeer schreef op woensdag 25 juni 2008 @ 12:05:
Het eerste kun je doen door select c + d AS E
Hmm, NULL + 1 zal volgens mij NULL opleveren. B)
Daarom dus COALESCE. :)

Hmm, COALESCE is ook niet goed, want dit zal niet het gewenste resultaat leveren als A & B ingevuld zijn.
Je zal dus idd met de concatenatie-operator moeten gaan werken ( + dus), echter, je zal ook ISNULL moeten gebruiken, zodanig dat je iets anders krijgt dan NULL als een van de velden NULL is.


code:
1
SELECT ISNULL (A, ' ') + ISNULL(B, ' ')

dus.

[ Voor 43% gewijzigd door whoami op 25-06-2008 12:11 ]

https://fgheysels.github.io/


  • _avalanche_
  • Registratie: Oktober 2003
  • Laatst online: 14-11 14:56
zo dat is snel, ik gebruik oracle db9i en als editor sql*plus. Ik moet nu naar school zal er morgen eens goed voor gaan zitten.

[ Voor 14% gewijzigd door _avalanche_ op 25-06-2008 12:31 ]


  • IJsbeer
  • Registratie: Juni 2001
  • Niet online
whoami schreef op woensdag 25 juni 2008 @ 12:09:


Hmm, NULL + 1 zal volgens mij NULL opleveren. B)
Daarom dus COALESCE. :)
Goed punt :)

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Dat kan met decode of case, bijvoorbeeld:
decode(c, null, a, b)

Who is John Galt?

Pagina: 1