Iif query returns duplicate rows with null data (1 Viewer)

FoolzRailer

New member
Local time
Today, 09:16
Joined
Apr 15, 2016
Messages
25
Hello

I'm trying for each ID to get the PIl_TXT, DIM_TXT, FRA_TXT and TIL_TXT. I'm trying to pull the values using an Iif function in the query. However I know I'm doing something wrong, as I'm getting 8-10 rows (with Distinct and without Distinct), where the expected output should be 2 rows. What am I missing?

Current output as shown below:
SQL Statement.png


Desired output:
Desired output.png


Below is my current SQL-code in the access query:

SQL:
SELECT 
  DISTINCT "'" & [Knude].[Knudenavn] & "'" & " '" & [Knude_1].[Knudenavn] & "' " & [Ledning].[DobbeltlednNr] AS [$LEDNING], 
  [Knude].[XKoordinat] & " " & [Knude].[YKoordinat] AS XY, 
  Delledning.BundloebskoteOpst AS FRA_Z, 
  Delledning.BundloebskoteNedst AS TIL_Z, 
  "" AS POSTNR, 
  "'" & [K_LEDNINGSFUNKTION].[BETEGNELSE] & "'" AS HTYPE, 
  "'" & [K_LedningTransport].[bETEGNELSE] & "'" AS UTYPE, 
  "'" & [K_LEDNINGSFUNKTION].[BETEGNELSE] & "'" AS LTYPE, 
  "'" & [Projekt].[Projektnavn] & "'" AS ENTREPRISE, 
  IIf(
    [Ledning].[Statuskode] = 1, 
    "E", 
    IIf(
      [Ledning].[Statuskode] = 2, 
      "R", 
      IIf(
        [Ledning].[Statuskode] = 3, 
        "A", 
        IIf(
          [Ledning].[Statuskode] = 4, 
          "O", 
          IIf(
            [Ledning].[Statuskode] = 6, "P", ""
          )
        )
      )
    )
  ) AS STATUS, 
  Delledning.Handelsmaal AS DIMENSION, 
  Delledning.Laengde AS LÆNGDE, 
  Delledning.Fald AS FALD, 
  "0,00" AS REDUKTION, 
  "0,00" AS EXTRA_OB, 
  IIf(
    [Ledning].[LednfunktionKode] = 52 
    Or [Ledning].[LednfunktionKode] = 59 
    Or [Ledning].[LednfunktionKode] = 58 
    Or [Ledning].[LednfunktionKode] = 56, 
    "80.0", 
    IIf(
      [Ledning].[LednfunktionKode] = 57 
      Or [Ledning].[LednfunktionKode] = 61 
      Or [Ledning].[LednfunktionKode] = 61 
      Or [Ledning].[LednfunktionKode] = 62, 
      "0.0", 
      "72.0"
    )
  ) AS MANNING, 
  "0.0" AS ACCU_Q, 
  "'" & [Ledning].[Bemaerkning] & "'" AS ANM, 
  "'" & [Ejerfordeling].[Navn] & "'" AS EJER, 
  Nz(
    IIf(
      [LabelDelledning].[PUNKTPAAlednKode] = 15, 
      [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse], 
      Null
    ), 
    ""
  ) AS PIL_TXT, 
  Nz(
    IIf(
      [LabelDelledning].[PUNKTPAAlednKode] = 0, 
      [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse], 
      Null
    ), 
    ""
  ) AS DIM_TXT, 
  Nz(
    IIf(
      [LabelDelledning].[PUNKTPAAlednKode] = 11, 
      [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse], 
      Null
    ), 
    ""
  ) AS FRA_TXT, 
  Nz(
    IIf(
      [LabelDelledning].[PUNKTPAAlednKode] = 11, 
      [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse], 
      Null
    ), 
    ""
  ) AS TIL_TXT 
FROM 
  (
    LabelDelledning 
    RIGHT JOIN (
      (
        (
          Projekt 
          RIGHT JOIN ProjektDelledning ON Projekt.ID = ProjektDelledning.ProjektID
        ) 
        RIGHT JOIN (
          (
            (
              Ledning 
              INNER JOIN (
                (
                  Delledning 
                  INNER JOIN Knude ON Delledning.OpstroemKnudeID = Knude.ID
                ) 
                INNER JOIN Knude AS Knude_1 ON Delledning.NedstroemKnudeID = Knude_1.ID
              ) ON Ledning.ID = Delledning.LedningID
            ) 
            INNER JOIN K_Ledningsfunktion ON Ledning.LednfunktionKode = K_Ledningsfunktion.Kode
          ) 
          INNER JOIN K_LedningTransport ON Ledning.TransportKode = K_LedningTransport.Kode
        ) ON ProjektDelledning.DelledningID = Delledning.ID
      ) 
      LEFT JOIN Ejerfordeling ON Ledning.EjerfordelingID = Ejerfordeling.ID
    ) ON LabelDelledning.DelledningID = Delledning.ID
  ) 
  LEFT JOIN K_TekstJustering ON LabelDelledning.TekstjusteringKode = K_TekstJustering.Kode;


Snippet of Iif:
SQL:
IIf([LabelDelledning].[PUNKTPAAlednKode]=15,[LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]) AS PIL_TXT,
IIf([LabelDelledning].[PUNKTPAAlednKode]=0,[LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]) AS DIM_TXT,
IIf([LabelDelledning].[PUNKTPAAlednKode]=11,[LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]) AS FRA_TXT,
IIf([LabelDelledning].[PUNKTPAAlednKode]=11,[LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]) AS TIL_TXT
 
Last edited:

cheekybuddha

AWF VIP
Local time
Today, 08:16
Joined
Jul 21, 2014
Messages
2,280
Sorry I've updated with full SQL.
OK, I see why you didn't post the full SQL to begin with! o_O :ROFLMAO:

I reformatted your query to *try* and understand it:
SQL:
SELECT
  "'" & [Knude].[Knudenavn] & "'" & " '" & [Knude_1].[Knudenavn] & "' " & [Ledning].[DobbeltlednNr] AS [$LEDNING],
  [Knude].[XKoordinat] & " " & [Knude].[YKoordinat] AS XY,
  Delledning.BundloebskoteOpst AS FRA_Z,
  Delledning.BundloebskoteNedst AS TIL_Z,
  "" AS POSTNR,
  "'" & [K_LEDNINGSFUNKTION].[BETEGNELSE] & "'" AS HTYPE,
  "'" & [K_LedningTransport].[bETEGNELSE] & "'" AS UTYPE,
  "'" & [K_LEDNINGSFUNKTION].[BETEGNELSE] & "'" AS LTYPE,
  "'" & [Projekt].[Projektnavn] & "'" AS ENTREPRISE,
  IIf(
    [Ledning].[Statuskode]=1,
    "E",
    IIf(
      [Ledning].[Statuskode]=2,
      "R",
      IIf(
        [Ledning].[Statuskode]=3,
        "A",
        IIf(
          [Ledning].[Statuskode]=4,
          "O",
          IIf(
            [Ledning].[Statuskode]=6,
            "P",
            ""
          )
        )
      )
    )
  ) AS STATUS,
  Delledning.Handelsmaal AS DIMENSION,
  Delledning.Laengde AS LÆNGDE,
  Delledning.Fald AS FALD,
  "0,00" AS REDUKTION,
  "0,00" AS EXTRA_OB,
  IIf(
    [Ledning].[LednfunktionKode]=52 Or [Ledning].[LednfunktionKode]=59 Or [Ledning].[LednfunktionKode]=58 Or [Ledning].[LednfunktionKode]=56,
    "80.0",
    IIf(
      [Ledning].[LednfunktionKode]=57 Or [Ledning].[LednfunktionKode]=61 Or [Ledning].[LednfunktionKode]=61 Or [Ledning].[LednfunktionKode]=62,
      "0.0",
      "72.0"
    )
  ) AS MANNING,
  "0.0" AS ACCU_Q,
  "'" & [Ledning].[Bemaerkning] & "'" AS ANM,
  "'" & [Ejerfordeling].[Navn] & "'" AS EJER,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=15,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS PIL_TXT,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=0,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS DIM_TXT,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=11,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS FRA_TXT,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=11,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS TIL_TXT
FROM (
  LabelDelledning
  RIGHT JOIN (
    (
      (
        Projekt
        RIGHT JOIN ProjektDelledning
                ON Projekt.ID = ProjektDelledning.ProjektID
      )
      RIGHT JOIN (
        (
          (
            Ledning
            INNER JOIN (
              (
                Delledning
                INNER JOIN Knude
                        ON Delledning.OpstroemKnudeID = Knude.ID
              )
              INNER JOIN Knude AS Knude_1
                      ON Delledning.NedstroemKnudeID = Knude_1.ID
            )
                    ON Ledning.ID = Delledning.LedningID
          )
          INNER JOIN K_Ledningsfunktion
                  ON Ledning.LednfunktionKode = K_Ledningsfunktion.Kode
        )
        INNER JOIN K_LedningTransport
                ON Ledning.TransportKode = K_LedningTransport.Kode
      )
              ON ProjektDelledning.DelledningID = Delledning.ID
    )
    LEFT JOIN Ejerfordeling
           ON Ledning.EjerfordelingID = Ejerfordeling.ID
  )
          ON LabelDelledning.DelledningID = Delledning.ID
)
LEFT JOIN K_TekstJustering
       ON LabelDelledning.TekstjusteringKode = K_TekstJustering.Kode
;

Before getting on to your issue, your IIf statements for PIL_TXT, DIM_TXT, FRA_TXT, TIL_TXT don't have the 'False' arguments - I didn't know you could do this, but sometimes the use of VBA functions in SQL can be forgiving here. Technically, I would add an empty string or Null for the third argument of the function.

Your STATUS field expression could be more concisely written as:
SQL:
...
  Choose(
    Ledning.Statuskode,
    'E',
    'R',
    'A',
    'O',
    'P'
  ) AS STATUS,
...

The way to remove the multiple lines is to use GROUP BY on all the other fields, but the complexity of your expressions might make this difficult.

First try aggregating your data, and then building the expressions on top of the aggregated query:
SQL:
SELECT
  "'" & t.Knudenavn & "'" & " '" & t.Knudenavn & "' " & t.DobbeltlednNr AS [$LEDNING],
  t.XKoordinat & " " & t.YKoordinat AS XY,
  t.BundloebskoteOpst AS FRA_Z,
  t.BundloebskoteNedst AS TIL_Z,
  "" AS POSTNR,
  "'" & t.BETEGNELSE & "'" AS HTYPE,
  "'" & t.bETEGNELSE & "'" AS UTYPE,
  "'" & t.BETEGNELSE & "'" AS LTYPE,
  "'" & t.Projektnavn & "'" AS ENTREPRISE,
  Choose(
    t.Statuskode,
    "E",
    "R",
    "A",
    "O",
    "P",
  ) AS STATUS,
  t.Handelsmaal AS DIMENSION,
  t.Laengde AS LÆNGDE,
  t.Fald AS FALD,
  "0,00" AS REDUKTION,
  "0,00" AS EXTRA_OB,
  IIf(
    t.LednfunktionKode IN (52, 59, 58, 56),
    "80.0",
    IIf(
      t.LednfunktionKode IN (57, 61, 62),
      "0.0",
      "72.0"
    )
  ) AS MANNING,
  "0.0" AS ACCU_Q,
  "'" & t.Bemaerkning & "'" AS ANM,
  "'" & t.Navn & "'" AS EJER,
  t.PIL_TXT,
  t.DIM_TXT,
  t.FRA_TXT,
  t.TIL_TXT
FROM (
  SELECT
    Knude_1.Knudenavn,
    Ledning.DobbeltlednNr,
    Knude.XKoordinat,
    Knude.YKoordinat,
    K_LEDNINGSFUNKTION.BETEGNELSE AS HTYPE,
    K_LedningTransport.bETEGNELSE AS UTYPE,
    K_LEDNINGSFUNKTION.BETEGNELSE AS LTYPE,
    Projekt.Projektnavn AS ENTREPRISE,
    Ledning.Statuskode,
    Delledning.Handelsmaal,
    Delledning.Laengde,
    Delledning.Fald,
    Ledning.LednfunktionKode,
    Ledning.Bemaerkning,
    Ejerfordeling.Navn,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=15,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS PIL_TXT,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=0,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS DIM_TXT,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=11,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS FRA_TXT,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=11,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS TIL_TXT
  FROM (
    LabelDelledning
    RIGHT JOIN (
      (
        (
          Projekt
          RIGHT JOIN ProjektDelledning
                  ON Projekt.ID = ProjektDelledning.ProjektID
        )
        RIGHT JOIN (
          (
            (
              Ledning
              INNER JOIN (
                (
                  Delledning
                  INNER JOIN Knude
                          ON Delledning.OpstroemKnudeID = Knude.ID
                )
                INNER JOIN Knude AS Knude_1
                        ON Delledning.NedstroemKnudeID = Knude_1.ID
              )
                      ON Ledning.ID = Delledning.LedningID
            )
            INNER JOIN K_Ledningsfunktion
                    ON Ledning.LednfunktionKode = K_Ledningsfunktion.Kode
          )
          INNER JOIN K_LedningTransport
                  ON Ledning.TransportKode = K_LedningTransport.Kode
        )
                ON ProjektDelledning.DelledningID = Delledning.ID
      )
      LEFT JOIN Ejerfordeling
             ON Ledning.EjerfordelingID = Ejerfordeling.ID
    )
            ON LabelDelledning.DelledningID = Delledning.ID
  )
  LEFT JOIN K_TekstJustering
         ON LabelDelledning.TekstjusteringKode = K_TekstJustering.Kode
  GROUP BY
    Knude_1.Knudenavn,
    Ledning.DobbeltlednNr,
    Knude.XKoordinat,
    Knude.YKoordinat,
    K_LEDNINGSFUNKTION.BETEGNELSE ,
    K_LedningTransport.bETEGNELSE,
    K_LEDNINGSFUNKTION.BETEGNELSE ,
    Projekt.Projektnavn,
    Ledning.Statuskode,
    Delledning.Handelsmaal,
    Delledning.Laengde,
    Delledning.Fald,
    Ledning.LednfunktionKode,
    Ledning.Bemaerkning,
    Ejerfordeling.Navn
) t
;
*** NOTE, since I don't have your actual db to play with, this is unlikely to work straight off the bat!!! ***
 

FoolzRailer

New member
Local time
Today, 09:16
Joined
Apr 15, 2016
Messages
25
OK, I see why you didn't post the full SQL to begin with! o_O :ROFLMAO:

I reformatted your query to *try* and understand it:
SQL:
SELECT
  "'" & [Knude].[Knudenavn] & "'" & " '" & [Knude_1].[Knudenavn] & "' " & [Ledning].[DobbeltlednNr] AS [$LEDNING],
  [Knude].[XKoordinat] & " " & [Knude].[YKoordinat] AS XY,
  Delledning.BundloebskoteOpst AS FRA_Z,
  Delledning.BundloebskoteNedst AS TIL_Z,
  "" AS POSTNR,
  "'" & [K_LEDNINGSFUNKTION].[BETEGNELSE] & "'" AS HTYPE,
  "'" & [K_LedningTransport].[bETEGNELSE] & "'" AS UTYPE,
  "'" & [K_LEDNINGSFUNKTION].[BETEGNELSE] & "'" AS LTYPE,
  "'" & [Projekt].[Projektnavn] & "'" AS ENTREPRISE,
  IIf(
    [Ledning].[Statuskode]=1,
    "E",
    IIf(
      [Ledning].[Statuskode]=2,
      "R",
      IIf(
        [Ledning].[Statuskode]=3,
        "A",
        IIf(
          [Ledning].[Statuskode]=4,
          "O",
          IIf(
            [Ledning].[Statuskode]=6,
            "P",
            ""
          )
        )
      )
    )
  ) AS STATUS,
  Delledning.Handelsmaal AS DIMENSION,
  Delledning.Laengde AS LÆNGDE,
  Delledning.Fald AS FALD,
  "0,00" AS REDUKTION,
  "0,00" AS EXTRA_OB,
  IIf(
    [Ledning].[LednfunktionKode]=52 Or [Ledning].[LednfunktionKode]=59 Or [Ledning].[LednfunktionKode]=58 Or [Ledning].[LednfunktionKode]=56,
    "80.0",
    IIf(
      [Ledning].[LednfunktionKode]=57 Or [Ledning].[LednfunktionKode]=61 Or [Ledning].[LednfunktionKode]=61 Or [Ledning].[LednfunktionKode]=62,
      "0.0",
      "72.0"
    )
  ) AS MANNING,
  "0.0" AS ACCU_Q,
  "'" & [Ledning].[Bemaerkning] & "'" AS ANM,
  "'" & [Ejerfordeling].[Navn] & "'" AS EJER,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=15,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS PIL_TXT,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=0,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS DIM_TXT,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=11,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS FRA_TXT,
  IIf(
    [LabelDelledning].[PUNKTPAAlednKode]=11,
    [LabelDelledning].[Xlabel] & " " & [LabelDelledning].[YLabel] & " " & [LabelDelledning].[Tekstvinkel] & " 0.90 0.90 " & [K_TEKSTjUSTERING].[Betegnelse]
  ) AS TIL_TXT
FROM (
  LabelDelledning
  RIGHT JOIN (
    (
      (
        Projekt
        RIGHT JOIN ProjektDelledning
                ON Projekt.ID = ProjektDelledning.ProjektID
      )
      RIGHT JOIN (
        (
          (
            Ledning
            INNER JOIN (
              (
                Delledning
                INNER JOIN Knude
                        ON Delledning.OpstroemKnudeID = Knude.ID
              )
              INNER JOIN Knude AS Knude_1
                      ON Delledning.NedstroemKnudeID = Knude_1.ID
            )
                    ON Ledning.ID = Delledning.LedningID
          )
          INNER JOIN K_Ledningsfunktion
                  ON Ledning.LednfunktionKode = K_Ledningsfunktion.Kode
        )
        INNER JOIN K_LedningTransport
                ON Ledning.TransportKode = K_LedningTransport.Kode
      )
              ON ProjektDelledning.DelledningID = Delledning.ID
    )
    LEFT JOIN Ejerfordeling
           ON Ledning.EjerfordelingID = Ejerfordeling.ID
  )
          ON LabelDelledning.DelledningID = Delledning.ID
)
LEFT JOIN K_TekstJustering
       ON LabelDelledning.TekstjusteringKode = K_TekstJustering.Kode
;

Before getting on to your issue, your IIf statements for PIL_TXT, DIM_TXT, FRA_TXT, TIL_TXT don't have the 'False' arguments - I didn't know you could do this, but sometimes the use of VBA functions in SQL can be forgiving here. Technically, I would add an empty string or Null for the third argument of the function.

Your STATUS field expression could be more concisely written as:
SQL:
...
  Choose(
    Ledning.Statuskode,
    'E',
    'R',
    'A',
    'O',
    'P'
  ) AS STATUS,
...

The way to remove the multiple lines is to use GROUP BY on all the other fields, but the complexity of your expressions might make this difficult.

First try aggregating your data, and then building the expressions on top of the aggregated query:
SQL:
SELECT
  "'" & t.Knudenavn & "'" & " '" & t.Knudenavn & "' " & t.DobbeltlednNr AS [$LEDNING],
  t.XKoordinat & " " & t.YKoordinat AS XY,
  t.BundloebskoteOpst AS FRA_Z,
  t.BundloebskoteNedst AS TIL_Z,
  "" AS POSTNR,
  "'" & t.BETEGNELSE & "'" AS HTYPE,
  "'" & t.bETEGNELSE & "'" AS UTYPE,
  "'" & t.BETEGNELSE & "'" AS LTYPE,
  "'" & t.Projektnavn & "'" AS ENTREPRISE,
  Choose(
    t.Statuskode,
    "E",
    "R",
    "A",
    "O",
    "P",
  ) AS STATUS,
  t.Handelsmaal AS DIMENSION,
  t.Laengde AS LÆNGDE,
  t.Fald AS FALD,
  "0,00" AS REDUKTION,
  "0,00" AS EXTRA_OB,
  IIf(
    t.LednfunktionKode IN (52, 59, 58, 56),
    "80.0",
    IIf(
      t.LednfunktionKode IN (57, 61, 62),
      "0.0",
      "72.0"
    )
  ) AS MANNING,
  "0.0" AS ACCU_Q,
  "'" & t.Bemaerkning & "'" AS ANM,
  "'" & t.Navn & "'" AS EJER,
  t.PIL_TXT,
  t.DIM_TXT,
  t.FRA_TXT,
  t.TIL_TXT
FROM (
  SELECT
    Knude_1.Knudenavn,
    Ledning.DobbeltlednNr,
    Knude.XKoordinat,
    Knude.YKoordinat,
    K_LEDNINGSFUNKTION.BETEGNELSE AS HTYPE,
    K_LedningTransport.bETEGNELSE AS UTYPE,
    K_LEDNINGSFUNKTION.BETEGNELSE AS LTYPE,
    Projekt.Projektnavn AS ENTREPRISE,
    Ledning.Statuskode,
    Delledning.Handelsmaal,
    Delledning.Laengde,
    Delledning.Fald,
    Ledning.LednfunktionKode,
    Ledning.Bemaerkning,
    Ejerfordeling.Navn,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=15,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS PIL_TXT,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=0,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS DIM_TXT,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=11,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS FRA_TXT,
    MAX(
      IIf(
        LabelDelledning.PUNKTPAAlednKode=11,
        LabelDelledning.Xlabel & " " & LabelDelledning.YLabel & " " & LabelDelledning.Tekstvinkel & " 0.90 0.90 " & K_TEKSTjUSTERING.Betegnelse,
        NULL
      )
    ) AS TIL_TXT
  FROM (
    LabelDelledning
    RIGHT JOIN (
      (
        (
          Projekt
          RIGHT JOIN ProjektDelledning
                  ON Projekt.ID = ProjektDelledning.ProjektID
        )
        RIGHT JOIN (
          (
            (
              Ledning
              INNER JOIN (
                (
                  Delledning
                  INNER JOIN Knude
                          ON Delledning.OpstroemKnudeID = Knude.ID
                )
                INNER JOIN Knude AS Knude_1
                        ON Delledning.NedstroemKnudeID = Knude_1.ID
              )
                      ON Ledning.ID = Delledning.LedningID
            )
            INNER JOIN K_Ledningsfunktion
                    ON Ledning.LednfunktionKode = K_Ledningsfunktion.Kode
          )
          INNER JOIN K_LedningTransport
                  ON Ledning.TransportKode = K_LedningTransport.Kode
        )
                ON ProjektDelledning.DelledningID = Delledning.ID
      )
      LEFT JOIN Ejerfordeling
             ON Ledning.EjerfordelingID = Ejerfordeling.ID
    )
            ON LabelDelledning.DelledningID = Delledning.ID
  )
  LEFT JOIN K_TekstJustering
         ON LabelDelledning.TekstjusteringKode = K_TekstJustering.Kode
  GROUP BY
    Knude_1.Knudenavn,
    Ledning.DobbeltlednNr,
    Knude.XKoordinat,
    Knude.YKoordinat,
    K_LEDNINGSFUNKTION.BETEGNELSE ,
    K_LedningTransport.bETEGNELSE,
    K_LEDNINGSFUNKTION.BETEGNELSE ,
    Projekt.Projektnavn,
    Ledning.Statuskode,
    Delledning.Handelsmaal,
    Delledning.Laengde,
    Delledning.Fald,
    Ledning.LednfunktionKode,
    Ledning.Bemaerkning,
    Ejerfordeling.Navn
) t
;
*** NOTE, since I don't have your actual db to play with, this is unlikely to work straight off the bat!!! ***

Much appreciate your help, I will have a look into what you suggest! And the database in question is set up to work with a specific program, but the data structure is terrible. Also I'm a programmers worst nightmare, someone with basic understanding but no best practice and methods :p

Side-note and might be stupid question (and probably not good practice), but is it possible to do a new query based on the above query i made and either merge the lines or remove the nulls that way?
 

Pat Hartman

Super Moderator
Staff member
Local time
Today, 03:16
Joined
Feb 19, 2002
Messages
43,275
Select queries are interchangeable with tables in most situations. So, the answer is yes but that query is horrible. Also, Jet/ACE do not optimize sub queries efficiently. I don't know if the query in question needs the sub query. If it doesn't, try removing it an making it a qerydef you join to.
 

Users who are viewing this thread

Top Bottom