Rijen met conditie in kolommen weergeven

Status
Niet open voor verdere reacties.

Megamar

Gebruiker
Lid geworden
14 mrt 2017
Berichten
12
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
 
opgelost

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:

Code:
cdproduct	cdprodcat	cdprodgrp
1000	B	Nike
1000	C	Shirts
2000	B	Adidas
2000	C	Shirts
3000	B	Nike
3000	C	Socks

Gewenst resultaat:

Code:
Product	Brand	Category
1000	Nike	Shirts
2000	Adidas	Shirts
3000	Nike	Socks

Code:

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 bewerkt:
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 bewerkt:
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 bewerkt:
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?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan