Jeg mangler at få kundenavnet på som ligger i en 3. tabel: "Customer".Name
Tabellen hedder "Customer" og hvis jeg skal vise hvordan "Customer" hænger på "Cust_ Ledger Entry" ser det sådan ud:
SELECT "Customer".Name FROM dbo."Cust_ Ledger Entry" "Cust_ Ledger Entry", dbo."Customer" "Customer" WHERE "Cust_ Ledger Entry"."Customer No_" = "Customer".No_
Opgaven er altså, at få den øverste SELECT sætning til at indeholde "Customer".Name fra tabellen dbo."Customer".
Kan du hjælpe?
Bonus spørgsmål: Den SUM jeg laver på Amount får en blank overskrift og bliver i Excel konverteret til "Column 1". Hvis jeg ville have den hed "Udestående", hvad gør jeg så?
Jeg må lige sige, at jeg arbejder med mysql, ikke mssql, men jeg går ud fra, at det følgende vil virke også i mssql.
For så at svare på dit direkte spørgsmål, hvordan du får kundenavnet med i din query: Først skal Customer.Name indføjes i SELECT'en, jeg har givet det plads nummer to, lige efter customerno. Yderligere skal FROM sektionen udbredes med en ekstra join. Hvis din forespørgsel virker som skrevet, så skulle denne udvidelse også virke:
Men jeg kan ikke dy mig for at foreslå, at du giver tabellerne aliaser (øgenavne) så du ikke behøver at gentage de lange tabelnavne. Følgende kode har samme effekt, men er kun halvt så lang og nemmere at overse:
SELECT e."Customer No_", c.Name, e."Document No_", e."Document Type", e.Description, e"Document Date", e."Due Date", Sum(d.Amount), e."Currency Code", e."Last Issued Reminder Level", e."Entry No_" FROM "Cust_ Ledger Entry" e LEFT JOIN "Detailed Cust_ Ledg_ Entry" d ON e."Entry No_" = d."Cust_ Ledger Entry No_" LEFT JOIN "Customer" c ON e."Customer No_" = c.No_ Where e.[Open]=1 GROUP BY e."Customer No_", e."Document No_", e."Document Type", e.Description, e."Document Date", e."Due Date", e."Currency Code", e."Last Issued Reminder Level", e."Entry No_"
Og så har jeg endnu en 'clever ass' bemærkning: Hvis du forenklede dine navne, således at der ikke forekommer mellemrum og specielle tegn, så kan du droppe anførselstegnene. Hvis du for eksempel ændrer til disse navne på tabellerne og felterne:
så ville du kunne forenkle forespørgslen til dette:
SELECT e.customerno, c.name, e.documentno, e.ocumenttype, e.description, e.documentdate, e.duedate, Sum(d.amount), e.currencycode, e.lastissuedreminderlevel, e.entryno, FROM CustomerLedgerEntry e LEFT JOIN DetailedCustLedgerEntry d ON e.entryno = d.custledgerentryno LEFT JOIN ustomer c ON e.customerno = c.no Where e.open=1 GROUP BY e.documentno, e.documenttype, e.description, e.documentdate, e.duedate, e.currencycode, e.lastissuedreminderlevel, e.entryno
Jeg har ikke testet dette, da jeg ikke har mssql installeret. Hvis der er syntaksfejl prøver vi at kikke på det igen.
SELECT e."Customer No_", c.Name, e."Document No_", e."Document Type", e.Description, e."Document Date", e."Due Date", Sum(d.Amount), e."Currency Code", e."Last Issued Reminder Level", e."Entry No_" FROM {oj dbo."Cust_ Ledger Entry" e LEFT OUTER JOIN dbo."Detailed Cust_ Ledg_ Entry" d ON e."Entry No_" = d."Cust_ Ledger Entry No_" left outer join dbo."Customer" c ON e."Customer No_" = c.No_} Where (e.[Open]=1) GROUP BY e."Customer No_", c.Name, e."Document No_", e."Document Type", e.Description, e."Document Date", e."Due Date", e."Currency Code", e."Last Issued Reminder Level", e."Entry No_"
Har du mulighed for at svare på mit bonus-spørgsmål vedr. den tomme kolonneoverskrift der kommer på SUM(d.Amount) delen?
Jeg kan desværre ikke ændre i tabellerne i Navision til uden mellemrum og special-tegn, det er derfor jeg hoppede på din midterste løsning med det samme.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.