Avatar billede laurents Nybegynder
20. juni 2003 - 16:23 Der er 2 kommentarer og
1 løsning

GROUP BY i en join

Halløjsa,

Jeg har følgende join:
strSQL = "SELECT *, Tbl_Data.ID AS data_id, "
strSQL = strSQL & "Tbl_Data.StandNo AS standno, "
strSQL = strSQL & "Tbl_Data.DatoTid AS DatoTid, "
strSQL = strSQL & "Tbl_Data.DatoTid AS dag, "
strSQL = strSQL & "Tbl_Data.Delivered AS Delivered, "
strSQL = strSQL & "Tbl_Data.Returned AS Returned, "
strSQL = strSQL & "Tbl_Data.DeliveredMx AS DeliveredMx, "
strSQL = strSQL & "Tbl_Data.ReturnMx AS ReturnMX, Tbl_Standerkartotek.*, "
strSQL = strSQL & "Tbl_Vognmaend.*, Tbl_Data.*, "
strSQL = strSQL & "Tbl_CentralTerminaler.DistributionTerminalNr AS DistributionTerminalNr, "
strSQL = strSQL & "Tbl_CentralTerminaler.DistributionTerminalNavn AS DistributionTerminalNavn, "
strSQL = strSQL & "Tbl_Standerkartotek.StandNo AS StandNo, "
strSQL = strSQL & "Tbl_Standerkartotek.ID AS Stander_ID, "
strSQL = strSQL & "Tbl_Standerkartotek.StandName AS StandName, "
'strSQL = strSQL & "Tbl_Standerkartotek.Contractor AS Expr16, "
strSQL = strSQL & "Tbl_Standerkartotek.Delivered AS Delivered_planed, "
strSQL = strSQL & "Tbl_Standerkartotek.Returned AS Returned_planed, "
strSQL = strSQL & "Tbl_Standerkartotek.DeliveredMx AS DeliveredMX_planed, "
strSQL = strSQL & "Tbl_Standerkartotek.ReturnMx AS ReturnMX_planed, "
strSQL = strSQL & "Tbl_Standerkartotek.ReturnSameDay AS ReturnSameDay, "
strSQL = strSQL & "Tbl_Vognmaend.ContrNavn AS VognmandNavn, "
strSQL = strSQL & "Tbl_Vognmaend.Contractor AS Vognmand_nummer, "
strSQL = strSQL & "Tbl_Vognmaend.id AS VognmandID "
strSQL = strSQL & "FROM Tbl_Vognmaend RIGHT OUTER JOIN "
strSQL = strSQL & "Tbl_Standerkartotek ON "
strSQL = strSQL & "Tbl_Vognmaend.id = Tbl_Standerkartotek.Contractor "
strSQL = strSQL & "RIGHT OUTER JOIN "
strSQL = strSQL & "Tbl_Data ON "
strSQL = strSQL & "Tbl_Standerkartotek.StandNo = Tbl_Data.StandNo LEFT OUTER JOIN "
strSQL = strSQL = "Tbl_CentralTerminaler ON "
strSQL = strSQL & "Tbl_Data.DistrubutionTerminalNr = Tbl_CentralTerminaler.DistributionTerminalNr "
strSQL = strSQL & "WHERE CONVERT(Char(10), Tbl_Data.DatoTid, 105) BETWEEN '" & request("RepDateFrom") & "' AND '" & request("RepDateTo") & "' "

GODT så - nu vil jeg så gerne have skrevet posterne ud, således at jeg kan vise VognmandNavn samt StandNo, men at tallene for delivered & returned bliver summeret til eet tal for den valgte periode.

Jeg har prøvet med:

GROUP BY Vognmand_nummer, Tbl_Data.StandNo, Tbl_Data.DatoTid

men det kom der ikke noget godt resultat ud af:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
/_files/reports/databystand.asp, line 138

Er der een, som kan lure hvad jeg gør galt..... jeg har prøvet mange konstellationer, men uden held, og nu har jeg vist stirret mig blind på det....
Avatar billede laurents Nybegynder
20. juni 2003 - 16:25 #1
glemte lige - jeg skal bruge data fra felterne Tbl_Data.StandNo , Tbl_Standerkartotek.ReturnSameDay, Tbl_Standerkartotek.StandName samt de 2 summeringer i min visning samt Vognmand_nummer som overskrift(er)....
Avatar billede bennytordrup Nybegynder
20. juni 2003 - 17:23 #2
Punkt 1: Skal du bruge Group by, må du ikke bruge select *
Punkt 2: Du skal have en eller anden aggreat-funktion med på et eller flere felter, f.eks. count, sum, min, avg eller lignende. Søg i Books Online efter aggreate functions.
Punkt 3: Alle elementer i Select-delen, som ikke er angivet som konstanter eller i brug af aggreat-funktioner, skal du have med i group by.

F.eks. select vm.VognmandNavn, d.StandNo, sum(sk.Delivered) as SumDelivered, Sum(sk.Returned) as SumReturned
from tbl_Vognmaend vm right outher join tbl_standerkartotek sk on vm.id=sk.contractor right outer join tbl_data d on sk.standno =d.standno left outer join tbl_centralterminaler ct on d.distributionterminalnr = ct.distributionterminalnr


Det kan godt være, du lige skal kigge denne query igennem for de korrekte feltnavne.
Avatar billede laurents Nybegynder
22. juni 2003 - 18:05 #3
Med tvists & turn fik jeg løst den - og du fik peget mig i rettet retning - så hér får du lige pointene..... selvom jeg forleden fik tildelt dig 100 point, som ikke var heeeelt fair - men alligevel - hjælpevillighed skal sq honoreres.... Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester