webForumDet fria alternativet

Räknenöt..

5 svar · 399 visningar · startad av freddyk

freddykMedlem sedan okt. 2006103 inlägg
#1

Tjena,

Har ett problem. Jag har en sp som skriver ut varje unik lagerplats för en viss kund enligt följande:

kundnr Lagerplats
1 12
1 13
1 14
2 17
2 22
3 10
...

Det jag vill få till är en räknare som räknar ihop en kunds totala antal lagerplatser som:
kundnr totalt
1 3
2 2
3 1
...

alltså räkna antal rader per kund...

Gärna i samma resultattabell som den första men om inte det går så i en egen sp kanske...

Jag har försökt en hel del olika varianter men kört fast. Så jag tänkte höra om ngn har en vettig lösning på detta problem?

Oerhört tacksam för all hjälp!!

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select kundnr,count(*)
  from lager
  group by kundnr
freddykMedlem sedan okt. 2006103 inlägg
#3

LarsG skrev:

select kundnr,count(*)
  from lager
  group by kundnr

Tjena och tack för svaret LarsG

Jag har provat att göra som du skrev men det ger inte rätt resultat. Jag får inte varje unik Lagerplats mha detta utan alla förekomster räknas ihop även där en kund har flera broschyrer på samma lagerplats. Ex:
En kund har totalt 11 broschyrer lagrade på sammanlagt 8 fysiska lagerplatser men eftersom det är 11 broschyrer visas 11 platser i listan då varje broschyr har en lagerplats kopplad till sig. Jag vill få fram siffran 8 i min uträkning men via SQLen jag har testat får jag fram 11 st... hmm

Min SQL ser ut så här:

SELECT DISTINCT dbo.kund.kundNr AS [KundNr],COUNT(*) AS [Totalt antal]
FROM         dbo.lagerplats	INNER JOIN dbo.lagerplatsBrochure ON dbo.lagerplats.LPExpID = dbo.lagerplatsBrochure.fk_lpID INNER JOIN
                      dbo.brochureLanguage ON dbo.lagerplatsBrochure.fk_brSLank = dbo.brochureLanguage.brLExpID INNER JOIN
                      dbo.brochure ON dbo.brochure.brochID = dbo.brochureLanguage.fk_brochureID INNER JOIN
                      dbo.kund ON dbo.kund.kundNr = dbo.brochure.brochKundNr
WHERE dbo.lagerplats.sammansatt = '1'
GROUP BY dbo.kund.kundNr
ORDER By dbo.kund.kundNr
freddykMedlem sedan okt. 2006103 inlägg
#4

freddyk skrev:

Tjena och tack för svaret LarsG

Jag har provat att göra som du skrev men det ger inte rätt resultat. Jag får inte varje unik Lagerplats mha detta utan alla förekomster räknas ihop även där en kund har flera broschyrer på samma lagerplats. Ex:
En kund har totalt 11 broschyrer lagrade på sammanlagt 8 fysiska lagerplatser men eftersom det är 11 broschyrer visas 11 platser i listan då varje broschyr har en lagerplats kopplad till sig. Jag vill få fram siffran 8 i min uträkning men via SQLen jag har testat får jag fram 11 st... hmm

Min SQL ser ut så här:

SELECT DISTINCT dbo.kund.kundNr AS [KundNr],COUNT(*) AS [Totalt antal]
FROM         dbo.lagerplats	INNER JOIN dbo.lagerplatsBrochure ON dbo.lagerplats.LPExpID = dbo.lagerplatsBrochure.fk_lpID INNER JOIN
                      dbo.brochureLanguage ON dbo.lagerplatsBrochure.fk_brSLank = dbo.brochureLanguage.brLExpID INNER JOIN
                      dbo.brochure ON dbo.brochure.brochID = dbo.brochureLanguage.fk_brochureID INNER JOIN
                      dbo.kund ON dbo.kund.kundNr = dbo.brochure.brochKundNr
WHERE dbo.lagerplats.sammansatt = '1'
GROUP BY dbo.kund.kundNr
ORDER By dbo.kund.kundNr

he he .... Kul att svara på sitt eget inlägg... tror jag löst det. Vad sägs om detta:

SELECT DISTINCT dbo.kund.kundNr AS [KundNr],COUNT(DISTINCT dbo.lagerplats.LPExpID) AS [Totalt antal]
FROM         dbo.lagerplats	INNER JOIN dbo.lagerplatsBrochure ON dbo.lagerplats.LPExpID = dbo.lagerplatsBrochure.fk_lpID INNER JOIN
                      dbo.brochureLanguage ON dbo.lagerplatsBrochure.fk_brSLank = dbo.brochureLanguage.brLExpID INNER JOIN
                      dbo.brochure ON dbo.brochure.brochID = dbo.brochureLanguage.fk_brochureID INNER JOIN
                      dbo.kund ON dbo.kund.kundNr = dbo.brochure.brochKundNr
WHERE dbo.lagerplats.sammansatt = '1'
GROUP BY dbo.kund.kundNr
ORDER By dbo.kund.kundNr

Borde fungera va?

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Du kan ta bort din första distinct. Den är onödig.

freddykMedlem sedan okt. 2006103 inlägg
#6

LarsG skrev:

Du kan ta bort din första distinct. Den är onödig.

Japp. Will do.

Tack LarsG för hjälpen! :)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)