Announcement

Collapse
No announcement yet.

Artikelliste mit Mehrfachzuordnung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Artikelliste mit Mehrfachzuordnung

    Hallo,

    ich habe ein Problem mit einer Artikelliste, die ich erstellen soll.

    Die Tabelle hat vereinfacht dargestellt folgenden Aufbau:

    Artikelnummer WGrp1 WGrp2
    4711WWWWWWWW10
    4712WWWWWWWW20
    4713WWWWWWWW10WW 30
    4714WWWWWWWW30
    4715WWWWWWWW30WWI20
    :
    :

    Hierauf will ich mit SQL folgende Auswertung erstellen:
    Eine Artikelliste, gruppiert nach (aufst.) Warengruppe (sowohl WGrp1 als auch WGrp2) und innerhalb der Warengruppe sortiert nach aufsteigender Artikelnummer.

    Das Problem ist, dass best. Artikel (hier: 4713 und 4715) zweimal in der Liste aufgeführt sein müssen und zwar sowohl unter der WGrp aus Feld 2 als auch Feld 3:

    10 4711
    10 4713
    20 4712
    20 4715
    30 4713
    30 4714
    30 4715

    Für meine Gruppierung muss ich also WGrp1 UND WGrp2 berücksichtigen???
    Hat hier jd. eine Idee?

    Falls nicht ganz klar ist was ich will, einfach nachfragen!
    Vielen Dank im Voraus!!

    Florian

  • #2
    Also am einfachsten sollte das mit einem UNION ALL gehen:

    Code:
    SELECT a.* FROM(
    SELECT Artikelnummer ARTNR ,WGrp1 WGRP FROM tabelle
    UNION ALL
    SELECT Artikelnummer ARTNR,WGrp2 WGRP FROM tabelle WHERE WGrp2 IS NOT NULL) a
    ORDER BY WGRP,ARTNR
    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Hallo,

      auf die Schnelle fällt mir folgendes ein:

      SELECT WGrp1, Artikelnummer
      FROM Tabelle
      WHERE WGrp1 IS NOT NULL
      UNION ALL
      SELECT WGrp2, Artikelnummer
      FROM Tabelle
      WHERE WGrp2 IS NOT NULL
      ORDER BY 1, 2
      ;

      Gruß
      Albernd

      Comment


      • #4
        Zuuu langsam

        Aber in einem UNION Block ist kein ORDER BY erlaubt - das muss über ein Subselect gemacht werden.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          evtl. interessant mit der schönen Aggregierung GROUPING SETS:

          --Beispiel für GROUPING SETS um alle gültigen Kombinationen der Warengruppen herauszufinden
          with a as
          (
          select 4711 id,10 wg1,NULL wg2 from dual
          UNION ALL
          select 4712,20, NULL from dual
          UNION ALL
          select 4713,10,30 from dual
          UNION ALL
          select 4714,30,NULL from dual
          UNION ALL
          select 4715,30,20 from dual
          )
          select id,wg from
          (
          select id,nvl(wg1,wg2) wg from a
          group by grouping sets((id,wg1),(id,wg2))
          )
          where wg is not null
          order by id,wg

          Comment


          • #6
            Hi Dim,

            der UNION funzt, nur darf man keine Spaltennamen im ORDER BY nehmen sondern muß auf die Spaltenpositionen im SELECT ausweichen.

            Gruß
            Albernd

            Comment


            • #7
              Vielen Dank euch allen!!

              Das mit dem UNION ALL hat hervorragend geklappt!

              Florian

              Comment

              Working...
              X