Announcement

Collapse
No announcement yet.

SQL Statement

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

  • SQL Statement

    Hey ich bin noch relativ neu dabei und versuche mich gerade an SQL ran zu tasten; Wollte Abfragen auf einer Iseries IBM machen über MSQuery; ich hoffe ich kann diese Frage in diesem Forum stellen;

    select * from

    (
    select * from

    (

    Select

    vp00PF.vp00NVK, vp00PF.vp00NVKP,
    vp00PF.vp00NVKPF1, vp00PF.vp00NVKPF2,
    vp00PF.vp00NVKPF3, vp00pf.VP00WFKTME,
    vp00pf.VP00BWARE, vp00pf.VP00DADT,
    vp00pf.vp00BMEHD

    From S1037717.HEWWSFILE.VP00PF VP00PF

    WHERE (vp00PF.vp00SMDT=1) AND
    (vp00PF.vp00SGB='002') AND
    (vp00PF.vp00SHBR='002') AND
    (vp00PF.vp00SABT='001') AND
    ((vp00pf.VP00WFKTME<>0) or
    (vp00pf.VP00BWARE <>0) or
    (vp00pf.VP00WANWME <> 0))

    ) tabellexyz

    inner join

    ((
    Select

    MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1, MH00PF.MH00NVKPF2,
    MH00PF.MH00NVKPF3,

    SUM (MH00PF.MH00BHFGWA) as HF_Anteil_2008


    From S1037717.HEWWSFILE.MH00PF MH00PF


    where
    (MH00PF.MH00SMDT=1) AND
    (MH00PF.MH00SGB='002') AND
    (MH00PF.MH00SHBR='002') AND
    (MH00PF.MH00SABT='001') AND
    (MH00PF.MH00DABTB>200800) And
    (MH00PF.MH00DABTB<200900) AND
    (MH00PF.MH00SVORG=20) and
    (MH00PF.MH00BHFGWA<>0)

    group by

    MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1, MH00PF.MH00NVKPF2,
    MH00PF.MH00NVKPF3
    )A

    on
    MH00NVK=vp00NVK and
    MH00NVKP=vp00NVKP and
    MH00NVKPF1=vp00NVKPF1 and
    MH00NVKPF2=vp00NVKPF2 and
    MH00NVKPF3=vp00NVKPF3
    ) b

    inner join

    (
    Select

    MM00PF.MM00BRGWM

    FROM S1037717.HEWWSFILE.MM00PF MM00PF

    ) c


    on b.MH00NVK=c.MM00NVK and
    b.MH00NVKp=c.MM00NVKp and
    b.MH00NVKPF1=c.MM00NVKPF1 and
    b.MH00NVKPF2=c.MM00NVKPF2 and
    b.MH00NVKPF3=c.MM00NVKPF3 ) D

    where not mh00nvk is null

  • #2
    Hallo,

    ich hoffe ich kann diese Frage in diesem Forum stellen;
    ohne Angabe des zugrundeliegenden Datenmodells wird es wohl etwas schwieriger den SQL-Code zu bewerten...
    Und wo/was ist die Frage ?
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Versuch das mal...

      select * from
      (
      Select
      vp00PF.vp00NVK, vp00PF.vp00NVKP,
      vp00PF.vp00NVKPF1, vp00PF.vp00NVKPF2,
      vp00PF.vp00NVKPF3, vp00pf.VP00WFKTME,
      vp00pf.VP00BWARE, vp00pf.VP00DADT,
      vp00pf.vp00BMEHD
      From S1037717.HEWWSFILE.VP00PF VP00PF
      WHERE vp00PF.vp00SMDT=1
      AND vp00PF.vp00SGB='002'
      AND vp00PF.vp00SHBR='002'
      AND vp00PF.vp00SABT='001'
      AND (vp00pf.VP00WFKTME<>0 or vp00pf.VP00BWARE <>0 or vp00pf.VP00WANWME <> 0)

      ) z
      inner join
      (
      Select
      MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1,
      MH00PF.MH00NVKPF2,MH00PF.MH00NVKPF3,
      SUM (MH00PF.MH00BHFGWA) as HF_Anteil_2008

      From S1037717.HEWWSFILE.MH00PF MH00PF
      where MH00PF.MH00SMDT=1
      AND MH00PF.MH00SGB='002'
      AND MH00PF.MH00SHBR='002'
      AND MH00PF.MH00SABT='001'
      AND MH00PF.MH00DABTB>200800
      AND MH00PF.MH00DABTB<200900
      AND MH00PF.MH00SVORG=20
      AND MH00PF.MH00BHFGWA<>0
      group by MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1,
      MH00PF.MH00NVKPF2,MH00PF.MH00NVKPF3

      )a
      on a.MH00NVK=z.vp00NVK
      and a.MH00NVKP=z.vp00NVKP
      and a.MH00NVKPF1=z.vp00NVKPF1
      and a.MH00NVKPF2=z.vp00NVKPF2
      and a.MH00NVKPF3=z.vp00NVKPF3
      inner join
      (
      Select MM00PF.MM00BRGWM, MM00NVK,MM00NVKp,MM00NVKPF1,MM00NVKPF2 ,MM00NVKPF3
      FROM S1037717.HEWWSFILE.MM00PF MM00PF

      ) c
      on a.MH00NVK=c.MM00NVK
      and a.MH00NVKp=c.MM00NVKp
      and a.MH00NVKPF1=c.MM00NVKPF1
      and a.MH00NVKPF2=c.MM00NVKPF2
      and a.MH00NVKPF3=c.MM00NVKPF3
      and mh00nvk is not null -- kommt darauf an wo das hingehört (a oder c)

      Comment


      • #4
        @Lahr

        Da haben Sie recht; hab auch festgestellt, dass eine Antwort auf meine nicht gestellte Frage "Warum funzt der Kram net" ohne Kenntnisse der DB kaum zu machen ist;

        @Ceynan

        Das Statement stimmt zwar logisch kommt aber zum falschen Ergebnis; Es werden viel zu viele Datensätze angezeigt;

        Wie gesagt der 1. inner join funzt noch mit dem richtigen Ergebnis; der zweite dann nicht mehr

        Die dopp. Klammer vor dem 2. Select ist falsch das;

        Die Frage ist eig. wie Verschachtel ich das SQL richtig; wie baue ich den zweiten inner join dran

        Select *
        From
        (

        **** Ab Hier funzt
        select *
        from

        (

        Select

        vp00PF.vp00NVK, vp00PF.vp00NVKP, vp00PF.vp00NVKPF1, vp00PF.vp00NVKPF2,
        vp00PF.vp00NVKPF3, vp00pf.VP00WFKTME, vp00pf.VP00BWARE, vp00pf.VP00DADT, vp00pf.vp00BMEHD


        From S1037717.HEWWSFILE.VP00PF VP00PF




        WHERE (vp00PF.vp00SMDT=1) AND
        (vp00PF.vp00SGB='002') AND
        (vp00PF.vp00SHBR='002') AND
        (vp00PF.vp00SABT='001') AND
        ((vp00pf.VP00WFKTME<>0) or
        (vp00pf.VP00BWARE <>0) or
        (vp00pf.VP00WANWME <> 0))

        ) A

        inner join

        (
        Select

        MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1, MH00PF.MH00NVKPF2,
        MH00PF.MH00NVKPF3,

        SUM (MH00PF.MH00BHFGWA) as HF_Anteil_2008


        From S1037717.HEWWSFILE.MH00PF MH00PF


        where
        (MH00PF.MH00SMDT=1) AND
        (MH00PF.MH00SGB='002') AND
        (MH00PF.MH00SHBR='002') AND
        (MH00PF.MH00SABT='001') AND
        (MH00PF.MH00DABTB>200800) And
        (MH00PF.MH00DABTB<200900) AND
        (MH00PF.MH00SVORG=20) and
        (MH00PF.MH00BHFGWA<>0)

        group by

        MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1, MH00PF.MH00NVKPF2,
        MH00PF.MH00NVKPF3

        )B

        on
        MH00NVK=vp00NVK and
        MH00NVKP=vp00NVKP and
        MH00NVKPF1=vp00NVKPF1 and
        MH00NVKPF2=vp00NVKPF2 and
        MH00NVKPF3=vp00NVKPF3


        ****Bis hierhin funzt er

        inner join

        (
        Select

        MM00PF.MM00BRGWM
        FROM S1037717.HEWWSFILE.MM00PF MM00PF
        ) C
        on B.MH00NVK=C.MM00NVK and
        B.MH00NVKp=C.MM00NVKp and
        B.MH00NVKPF1=C.MM00NVKPF1 and
        B.MH00NVKPF2=C.MM00NVKPF2 and
        B.MH00NVKPF3=C.MM00NVKPF3

        where not mh00nvk is null

        Comment


        • #5
          Versuch 2...

          select * from
          (
          select * from
          (
          (Select
          vp00PF.vp00NVK, vp00PF.vp00NVKP,
          vp00PF.vp00NVKPF1, vp00PF.vp00NVKPF2,
          vp00PF.vp00NVKPF3, vp00pf.VP00WFKTME,
          vp00pf.VP00BWARE, vp00pf.VP00DADT,
          vp00pf.vp00BMEHD
          From S1037717.HEWWSFILE.VP00PF VP00PF
          WHERE (vp00PF.vp00SMDT=1) AND
          (vp00PF.vp00SGB='002') AND
          (vp00PF.vp00SHBR='002') AND
          (vp00PF.vp00SABT='001') AND
          ((vp00pf.VP00WFKTME<>0) or
          (vp00pf.VP00BWARE <>0) or
          (vp00pf.VP00WANWME <> 0))
          ) z
          inner join
          (Select
          MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1,
          MH00PF.MH00NVKPF2,
          MH00PF.MH00NVKPF3,
          SUM (MH00PF.MH00BHFGWA) as HF_Anteil_2008
          From S1037717.HEWWSFILE.MH00PF MH00PF
          where (MH00PF.MH00SMDT=1) AND
          (MH00PF.MH00SGB='002') AND
          (MH00PF.MH00SHBR='002') AND
          (MH00PF.MH00SABT='001') AND
          (MH00PF.MH00DABTB>200800) And
          (MH00PF.MH00DABTB<200900) AND
          (MH00PF.MH00SVORG=20) and
          (MH00PF.MH00BHFGWA<>0)
          group by MH00PF.MH00NVK, MH00PF.MH00NVKP, MH00PF.MH00NVKPF1,
          MH00PF.MH00NVKPF2, MH00PF.MH00NVKPF3
          ) a

          on MH00NVK=vp00NVK and
          MH00NVKP=vp00NVKP and
          MH00NVKPF1=vp00NVKPF1 and
          MH00NVKPF2=vp00NVKPF2 and
          MH00NVKPF3=vp00NVKPF3
          ) b
          inner join
          ( Select MM00PF.MM00BRGWM, MM00NVK,
          MM00NVKp,MM00NVKPF1,MM00NVKPF2,MM00NVKPF3
          FROM S1037717.HEWWSFILE.MM00PF MM00PF
          ) c
          on b.MH00NVK=c.MM00NVK and
          b.MH00NVKp=c.MM00NVKp and
          b.MH00NVKPF1=c.MM00NVKPF1 and
          b.MH00NVKPF2=c.MM00NVKPF2 and
          b.MH00NVKPF3=c.MM00NVKPF3

          ) D
          where not mh00nvk is null

          Comment


          • #6
            Gefahr erkannt Gefahr gebannt;

            einfach noch oben ein Select * From mehr;

            Trotzdem danke für die Hilfe

            Comment

            Working...
            X