webForumDet fria alternativet

Distinct på datum

7 svar · 451 visningar · startad av ecrost

ecrostMedlem sedan sep. 200425 inlägg
#1

SQL-server
ASP-sida

Svårt att hitta någon lämplig Rubrik på denna...
Har ett problem med en distinct-sats som jag inte får till riktigt.
Satsen ser ut på följande nu..

SQLlevtur = "SELECT tur, sum(antalstopp) AS stopp, SUM(vikt) AS vikt, SUM(netto) AS netto1, SUM(tb) AS tb1, SUM(tb)/ SUM(netto)* 100 AS tbpro
FROM leverans
WHERE (levdatum BETWEEN '20051001' AND '20051101') AND (netto <> 0) "&_
GROUP BY tur
ORDER BY tur "

Här behöver jag kompletera SQL-satsen med hur många gånger turen har gått under den aktuella datum-ramen.
Problemet är att varje tur kan förekomma 15 gånger på samma dag (pga att kundnummer finns med i tabellen)

Man skulle vilja köra någon form av "select distinct/count tur by datum"

Resultatet bör se ut på följande

Tur __ antal turer/period __ snittvärde/tur
222 __ 5 __ 25 000
111 _
_ 10 _
______________ 30 000

tohaMedlem sedan dec. 1999707 inlägg
#2

Gör en CONVERT() på datumet för att inte ta hänsyn till timmar/minuter:

set dateformat ymd
select convert(datetime, convert(varchar, getdate(), 112))

Konverterar först till en varchar med datumet utan klockan, sedan en convert för att få det till datetime igen.

ecrostMedlem sedan sep. 200425 inlägg
#3

Hehe nu är jag helt borta. Jag förstår inte alls hur du menar :(

Känns som att jag vill få fram en sak och du en annan ...

såhär ser tabellen ut...typ
Kundnr __ Tur _stopp_ vikt____rader_ summa___ datum
9423 __ 42 __ 1 __ 22,1 __ 5 __ 179,66 __ 20050103
3434 __ 42 __ 1 __ 23,4 __ 9 __ 980,66 __ 20050103

Just denna tur kan ha lämnat kajen 10 gånger under 10 veckor dvs 1 gång i veckan.
Värdet jag behöver få fram är hur många gånger tur 42 har lämnat kajen under perioden detta för att kunna göra att beräkningar.
Rapporten bygger på ett snittvärde per tur hela tiden. tex snittvärde/tur 10veckor snittvärde/tur senaste 5 veckorna.. På något sätt måste jag få fram hur många gånger turen lämnat kajen i sqlsatsen.

Kollar vi på den första inlägget...

Tur __ antal turer/period __ snittvärde/tur
222 __ 5 __ 25 000
111 _
_ 10 _
______________ 30 000

Resultatet jag har nu ser ut på följande sätt

Tur __ antal turer/period __ snittvärde/tur
222 __ 1 __ 125 000
111 _
_ 1 _
_______________ 300 000

Hoppas jag beskriver hyfsat iaf :)

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det är fortfarande oklart. Ge fler exempelrader och ett resultat som är baserat på dessa rader.

ecrostMedlem sedan sep. 200425 inlägg
#5

Skickar in med en execl fil.. lite lättare att skilja på kolumnerna då.

Har även lagt in komentarer på "vad som ska göras"
hoppas det blir lättare att förstå nu.

Det jag vill är att få fram: Hur många gånger har turen lämnat kajen under den valda perioden.

Hoppas jag lyckats förklara nu :)

tohaMedlem sedan dec. 1999707 inlägg
#6

Ok, missförstod först då. Men är det något sånt här du är ute efter?

SELECT
	Tur,
	AVG(Stopp)	AS AvgStopp,
	COUNT(Tur)	AS AntalTurer,
	AVG(Vikt)	AS AvgVikt,
	AVG(Summa)	AS AvgSumma
FROM
	Leverans
WHERE
	datum BETWEEN '2006-01-01' AND '2006-01-30'
GROUP BY
	Tur
ecrostMedlem sedan sep. 200425 inlägg
#7

tur \ stopp \ antalturer \ snitt vikt\ snitt summa \
140 \ 1 \ 45 \ 151,884888 \ 5444,244666

Perioden jag frågade på var 5 dagar. Så antal turer kan vara MAX 10 för/e-middag. Antal turer är värdet på antal stopp hos kunder som den gjort. Så man skulle behöva få till en sql-sats.. om det går som ser ut på följande

select tur, vikt, stopp, summa, >> count-distinct(tur) per dag <<
from leverans
where datum between '20051001' and '20051023'

Går det?

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Byt

count(tur)

mot

count(distinct levdatum)

Vad menar du med för/e-middag? Ser inte hur man kan få ut den distinktionen med de data du visat.

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