UNION ? Om 1 Rij in 2 rijen te splitsen ?

  • Onderwerp starter Onderwerp starter Helix
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Helix

Gebruiker
Lid geworden
16 okt 2007
Berichten
9
Hallo allemaal!

Ik probeer van de rij Inkoopprijs 2 rijen te maken ( Dienstprijs en Productprijs) de query die ik hiervoor gebruik geeft mij echter maar 1 rij terug.( Dienstprijs )
Het doel is om Dienstprijs en Productprijs van elkaar te scheiden ( vandaar de where functie ).
Kan iemand mij hiermee uit de brand helpen ?

Alvast bedankt!!

Query:

SELECT DISTINCT WERKBONREGEL.RegelID, WERKBONARTIKEL.InkoopPrijs AS DienstPrijs
FROM Relatie INNER JOIN
ONDERNEMING_LID ON Relatie.Relatie_NR = ONDERNEMING_LID.Relatie_NR AND
Relatie.Relatie_VolgNR = ONDERNEMING_LID.Relatie_VolgNR INNER JOIN
RELATIEGROEP ON ONDERNEMING_LID.Groep_ID = RELATIEGROEP.Groep_ID INNER JOIN
WERKBONREGEL ON Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR AND Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR INNER JOIN
WERKBONARTIKEL ON WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR AND
WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR
WHERE (RELATIEGROEP.Naam = 'PZ Inhuurkracht')
UNION
SELECT DISTINCT WERKBONREGEL.RegelID, WERKBONARTIKEL.InkoopPrijs AS ProductPrijs
FROM Relatie INNER JOIN
ONDERNEMING_LID ON Relatie.Relatie_NR = ONDERNEMING_LID.Relatie_NR AND
Relatie.Relatie_VolgNR = ONDERNEMING_LID.Relatie_VolgNR INNER JOIN
RELATIEGROEP ON ONDERNEMING_LID.Groep_ID = RELATIEGROEP.Groep_ID INNER JOIN
WERKBONREGEL ON Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR AND Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR INNER JOIN
WERKBONARTIKEL ON WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR AND
WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR
WHERE (RELATIEGROEP.Naam NOT LIKE 'PZ Inhuurkracht')
 
Hallo allemaal!

Ik probeer van de rij Inkoopprijs 2 rijen te maken ( Dienstprijs en Productprijs) de query die ik hiervoor gebruik geeft mij echter maar 1 rij terug.( Dienstprijs )
Het doel is om Dienstprijs en Productprijs van elkaar te scheiden ( vandaar de where functie ).
Kan iemand mij hiermee uit de brand helpen ?

Alvast bedankt!!

Query:

SELECT DISTINCT WERKBONREGEL.RegelID, WERKBONARTIKEL.InkoopPrijs AS DienstPrijs
FROM Relatie INNER JOIN
ONDERNEMING_LID ON Relatie.Relatie_NR = ONDERNEMING_LID.Relatie_NR AND
Relatie.Relatie_VolgNR = ONDERNEMING_LID.Relatie_VolgNR INNER JOIN
RELATIEGROEP ON ONDERNEMING_LID.Groep_ID = RELATIEGROEP.Groep_ID INNER JOIN
WERKBONREGEL ON Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR AND Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR INNER JOIN
WERKBONARTIKEL ON WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR AND
WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR
WHERE (RELATIEGROEP.Naam = 'PZ Inhuurkracht')
UNION
SELECT DISTINCT WERKBONREGEL.RegelID, WERKBONARTIKEL.InkoopPrijs AS ProductPrijs
FROM Relatie INNER JOIN
ONDERNEMING_LID ON Relatie.Relatie_NR = ONDERNEMING_LID.Relatie_NR AND
Relatie.Relatie_VolgNR = ONDERNEMING_LID.Relatie_VolgNR INNER JOIN
RELATIEGROEP ON ONDERNEMING_LID.Groep_ID = RELATIEGROEP.Groep_ID INNER JOIN
WERKBONREGEL ON Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR AND Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR INNER JOIN
WERKBONARTIKEL ON WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR AND
WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR
WHERE (RELATIEGROEP.Naam NOT LIKE 'PZ Inhuurkracht')
Daar is het where statement niet voor.
Code:
SELECT DISTINCT WERKBONREGEL.RegelID, WERKBONARTIKEL.InkoopPrijs AS DienstPrijs, 0 as ProductPrijs
FROM         Relatie INNER JOIN
                      ONDERNEMING_LID ON Relatie.Relatie_NR = ONDERNEMING_LID.Relatie_NR AND 
                      Relatie.Relatie_VolgNR = ONDERNEMING_LID.Relatie_VolgNR INNER JOIN
                      RELATIEGROEP ON ONDERNEMING_LID.Groep_ID = RELATIEGROEP.Groep_ID INNER JOIN
                      WERKBONREGEL ON Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR AND Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR INNER JOIN
                      WERKBONARTIKEL ON WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR AND 
                      WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR
WHERE     (RELATIEGROEP.Naam = 'PZ Inhuurkracht')
UNION 
SELECT DISTINCT WERKBONREGEL.RegelID, 0 as DienstPrijs, WERKBONARTIKEL.InkoopPrijs AS ProductPrijs
FROM         Relatie INNER JOIN
                      ONDERNEMING_LID ON Relatie.Relatie_NR = ONDERNEMING_LID.Relatie_NR AND 
                      Relatie.Relatie_VolgNR = ONDERNEMING_LID.Relatie_VolgNR INNER JOIN
                      RELATIEGROEP ON ONDERNEMING_LID.Groep_ID = RELATIEGROEP.Groep_ID INNER JOIN
                      WERKBONREGEL ON Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR AND Relatie.Relatie_NR = WERKBONREGEL.Relatie_NR INNER JOIN
                      WERKBONARTIKEL ON WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR AND 
                      WERKBONREGEL.ArtikelNR = WERKBONARTIKEL.ArtikelNR
WHERE     (RELATIEGROEP.Naam NOT LIKE 'PZ Inhuurkracht')
In de eerste query ruimte gemaakt voor ProductPrijs in de tweede query ruimte gemaakt voor DienstPrijs.
Misschien moet je geen union gebruiken maar joinen. Je query heeft teveel tekst om daar uitsluitsel over te geven.

Enjoy!
 
Bedankt voor de tip!

Op deze manier krijg ik er inderdaad twee rijen uit.
Nu blijkt echter dat op sommige werkbonregel.regelid's zowel een prudctprijs als een dienstprijs voorkomt.

ik heb dit uiteindelijk op moeten lossen door in SSIS 2 packages te draaien ipv één.
Maar het werkt nu gelukkig :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan