/ Forside/ Teknologi / Udvikling / SQL / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Flere subqueries
Fra : pkjoeller
Vist : 366 gange
300 point
Dato : 20-11-02 22:21

Hej

Jeg har en Access-tabel, der ser omtrent sådan ud

Vare Kunde Antal
HN NA 20
HN NA 15
HM NB 10
HM NA 5
HN NC 7
HL NA 5
osv.


Jeg vil gerne have konstrueret en SQL-sætning, der kan give følgende resultat:

Kunde Antal, HN Antal, HM Antal, HL Antal, Total
NA 35 5 5 45
NB 10 10
NC 7 7

Nogen forslag?

mvh

Per

 
 
Kommentar
Fra : Vestjyden


Dato : 21-11-02 09:44

Det kan du ikke lave i en select. Problemet vil jeg løse ved at lave en almindelig select af alle poster, og så vise resultatet i en crosstable, med group pr. kunde og sum pr. vare.

Kommentar
Fra : pkjoeller


Dato : 24-11-02 14:43

Tak for svaret.

Jeg er ikke nogen 'haj' til SQL, og en søgning på Google gav ikke nogen umiddelbart brugbare eksempler. Kan du hjælpe mig lidt mere? Evt. med et link til et eksempel.

På forhånd tak.

Kommentar
Fra : pkjoeller


Dato : 28-11-02 22:53

Jeg har nu fået følgende bikset sammen. MEN - det virker ikke. Hvorfor?

strSQL =   "SELECT CustomerID, HN, HM, tot "_
   & "FROM "_
   & "(TRANSFORM SUM(Qty) "_
   & "SELECT CustomerID, SUM(Qty) AS tot "_
   & "FROM tblSALG1 "_
   & "WHERE Code BETWEEN 'HA' AND 'IZ' "_
   & "GROUP BY CustomerID "_
   & "PIVOT Code) "_
& "ORDER BY tot DESC"


Kommentar
Fra : Vestjyden


Dato : 29-11-02 10:18

Hvilket program bruger du til at udtrække fra databasen?

Kommentar
Fra : pkjoeller


Dato : 29-11-02 12:45

Udtrækket skal vises i en browser ved hjælp af en asp-side.

Kommentar
Fra : Vestjyden


Dato : 29-11-02 13:34

Det kan jeg ikke svare på, men er der ikke mulighed for at vise de valgte data som en crosstable, da jeg ikke kan se anden udvej for at få det ønskede resultat. Beklager.

Kommentar
Fra : pkjoeller


Dato : 29-11-02 14:51

Den 'invendige' del sql-strengen (TRANSFORM .... PIVOT Code) virker. Problemet opstår, når jeg vil have data'ene sorteret faldende.

Kommentar
Fra : MouseKeeperX


Dato : 05-08-03 15:47

Længe siden, men alligevel...

En mulig løsning kunne være:

select K1.*, (K1.HL + K1.HM + K1.HN) as total
from ( select kunde,
   sum(case Vare when 'HL' then Antal ELSE 0 END) AS HL,
   sum(case Vare when 'HM' then Antal ELSE 0 END) AS HM,
   sum(case Vare when 'HN' then Antal ELSE 0 END) AS HN
from kandu as K
group by K.kunde) as K1

mvh
MouseKeeperX

Kommentar
Fra : poulerikdahl


Dato : 30-10-03 15:55

Hejsa pkjoeller m.fl.
Jeg vil nu mene at de sagtens kan lade sig gøre med en simpel SQL. Dog kan den hurtigt vokse hvis man har mange varer, og der kan blive nogle flere problemer som man må arbejde sig ud af med en form for outer-joins; men denne virker. :

SELECT hn.kunde,
Sum(hn.antal) AS ['Varer HN'],
Sum(hm.antal) AS ['Varer HM'],
Sum(hl.antal) AS ['Varer HL'],
Sum(hn.antal+hm.antal+hl.antal) AS ['Varer total']
FROM tabel1 AS hn,
tabel1 AS hm,
tabel1 AS hl
WHERE hn.kunde=hm.kunde
And hn.kunde=hl.kunde
And hn.vare='HN'
And hm.vare='HM'
And hl.vare='HL'
GROUP BY hn.kunde;

Testet i Access !! med succes

Jeg ved så godt at der kan være problemer hvis alle kunder ikke har alle varer osv. men som sagt det må man så klare med outerjoins.

mvh
Poul-Erik

Kommentar
Fra : svend_dyhr


Dato : 16-12-05 15:35

Hvad med den her lavet som en crosstab query i Access, og så kaldt fra ASP siden?

TRANSFORM Sum(Table1.Antal) AS Total
SELECT Table1.Kunde, Sum(Table1.Antal) AS Ialt
FROM Table1
GROUP BY Table1.Kunde
ORDER BY Table1.Kunde, Table1.Vare
PIVOT Table1.Vare;

mvh,
Svend

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407943
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste