

Hallo,
Ik ben een beginnende SQL gebruiker en ik heb een problem waar ik niet uitkom.
Ik heb een aantal rijen die ik in een kolom wil weergeven, zie onder.
Ik heb de tabel als volgt:
Order sub ID status
609011 01 01 R
609011 01 02 P
609011 01 03 R
en hier staan er nog wel een aantal ID's in.
Ik wil dan kunnen kiezen welke ID's ik wil weergeven en dan wel als volgt:
In dit voorbeeld alleen ID 01 en 02.
Order sub ID status ID status
609011 01 01 R 02 P
Ik weet niet hoe ik dit moet schrijven.
Wie kan mijn helpen?
Met vr.gr.
Marco
Dit is een iets andere opzet maar het komt op hetzelfde neer.
Door 2 keer hetzelfde bestand te gebruiken maar dan met een andere naam lukt het.
select ptfppla.poors# salesorder, ptfppla.poord# order, ptfppla.sosor# pos, A.worew# wk_panel, A.wored# dag_panel, A.wopcst status_panel, B.worew# wk_dm, B.wored# dag_dm, B.wopcst status_dm, postw# week, postd# dag
from nsli02.ptfppla
left outer join nsli02.ptfwola A
on A.woord# = poord#
and A.wosor# = sosor#
and A.wowtid = '1'
Left outer join nsli02.ptfwola B
on B.woord# = poord#
and B.wosor# = sosor#
and B.wowtid = '2'
where sospcs not in ('dep', 'pro')
and postw# between '1710' and '3535'
order by postw#, postd#
Ik zit met hetzelfde probleem. Ik moet deze query draaien op een tabel in een ERP database (Progress OpenEdge 11.3) en kan dus niet zomaar een tweede bestand aanmaken met een andere naam. Ik had bedacht om met en subquery te werken, maar krijg de foutmelding dat de subquery meerdere regels oplevert (wat ik ook wel begrijp, omdat ik in de subquery nog niet heb opgegeven dat hij alleen de waarde hoeft op te halen voor het corresponderende product uit de hoofdquery). Hoe kan ik dat doen, of dit probleem op een andere manier tackelen?
Brontabel bb-043:
Gewenst resultaat:Code:cdproduct cdprodcat cdprodgrp 1000 B Nike 1000 C Shirts 2000 B Adidas 2000 C Shirts 3000 B Nike 3000 C Socks
Code:Code:Product Brand Category 1000 Nike Shirts 2000 Adidas Shirts 3000 Nike Socks
Code:Select PUB."lb-180".cdprodukt, PUB."lb-180".cdstandeenhd, PUB."bb-040"."omschr-35", PUB."bb-040".zoeknaam, (Select PUB."bb-043".cdprodgrp From PUB."bb-043" Inner Join PUB."bb-040" On PUB."bb-040".cdprodukt = PUB."bb-043".cdprodukt Where PUB."bb-043".cdprodcat = 'B'), (Select PUB."bb-043".cdprodgrp From PUB."bb-043" Inner Join PUB."bb-040" On PUB."bb-040".cdprodukt = PUB."bb-043".cdprodukt Where PUB."bb-043".cdprodcat = 'C') From PUB."bb-040" Inner Join PUB."lb-180" On PUB."bb-040".cdprodukt = PUB."lb-180".cdprodukt Where PUB."lb-180".cdadmin = '01'
Laatst aangepast door ArjanVos : 28 maart 2017 om 16:07 Reden: typo
Toch gelukt! Even AS invoegen bij hernoemen van tabellen
Code:SELECT PUB."lb-180".cdprodukt, PUB."lb-180".cdstandeenhd, PUB."bb-040"."omschr-35", PUB."bb-040".zoeknaam, A1.cdprodgrp AS Brand, A2.cdprodgrp AS BusinessUnit FROM PUB."bb-040" INNER JOIN PUB."lb-180" ON PUB."bb-040".cdprodukt = PUB."lb-180".cdprodukt INNER JOIN PUB."bb-043" AS A1 ON PUB."lb-180".cdprodukt = A1.cdprodukt INNER JOIN PUB."bb-043" AS A2 ON PUB."lb-180".cdprodukt = A2.cdprodukt WHERE PUB."lb-180".cdadmin = '01' AND A1.cdprodcat = 'BRN' AND A2.cdprodcat = 'B'
Laatst aangepast door ArjanVos : 29 maart 2017 om 13:24
Toch de code nog iets verbeterd. Ik wou namelijk alle producten, ongeacht of in tabel bb-043 wel of niet alle categorieën waren ingevuld. Nu dus met een left join gewerkt en filter in de join opgenomen.
Code:SELECT P.cdprodukt AS Product, P.cdstandeenhd, PUB."bb-040"."omschr-35", PUB."bb-040".zoeknaam, A1.cdprodgrp AS Brand, A2.cdprodgrp AS BusinessUnit, A3.cdprodgrp AS B2B FROM PUB."bb-040" INNER JOIN PUB."lb-180" AS P ON PUB."bb-040".cdprodukt = P.cdprodukt LEFT JOIN PUB."bb-043" AS A1 ON P.cdprodukt = A1.cdprodukt AND A1.cdprodcat = 'BRN' LEFT JOIN PUB."bb-043" AS A2 ON P.cdprodukt = A2.cdprodukt AND A2.cdprodcat = 'B' LEFT JOIN PUB."bb-043" AS A3 ON P.cdprodukt = A3.cdprodukt AND A3.cdprodcat = 'B2B' WHERE P.cdadmin = '01'
Laatst aangepast door ArjanVos : 29 maart 2017 om 13:52
Probleem wat ik nu nog overhoud, is dat het wel heel erg traag gaat worden als ik op deze manier 10x left join op dezelfde tabel. Kan ik wat ik wil toch niet fixen met slechts één left join?