Jag har en tabell med besökare där jag lagrar datum... Nu vet jag inte hur det funkar i SQL 2000, men i MySQL kan man skriva Gör Convert på kolumnen datum. Antingen så är det ju bara att lägga till en WHERE-klausul med ett datumintervall så får du ju en lista för de dagar som ingår i det intervallet. Så ser du till att intervallet motsvarar den vecka du efterfrågar. Försök undvika funktionsanrop hoss SQL servern Detta gör frågan ineffektiv eftersom du inte kan använda index.Sumrering i SQL-sats (Datum)
det finns flera med samma datum... osv...
Om jag kör "SELECT Datum, Count(*) FROM Visitors GROUP BY Datum"
så får jag ut hur många besökare det var ett visst datum...
Men jag skulle vilja grupera så jag ser hur statistiken ser ut för en vecka...
hur många besökare det är på måndagen, tisdagen... osv....
Hoppas ni förstår.... Jag kör i SQL 2000 Ent
Mvh
Johan.NETSv: Sumrering i SQL-sats (Datum)
<code>
SELECT Datum, Count(*)
FROM Visitors
WHERE WEEK(Datum)='45' /* för vecka 45 */
GROUP BY WEEKDAY(Datum)
</code>Sv: Sumrering i SQL-sats (Datum)
Med convert kan du få fram ex. dag.
Gruppera också på Convert.
I hjälpen till MS QueryAnalyser finns samtliga argument till Convert.Sv: Sumrering i SQL-sats (Datum)
Men jag undrar om du kanske egentligen menar att du vill se hur många besökare det är på måndagar, tisdagar, onsdagar etc i allmänhet, inte för en specifik vecka. Då får du använda funktionen DATEPART, typ så här:
<code>
SELECT DATEPART(weekday, Datum), COUNT(*)
FROM Visitors
GROUP BY DATEPART(weekday, Datum)
</code>
Se till att din SQL Server är korrekt inställd på vilken dag som är första dag i veckan, det gör du annars med SET DATEFIRST. Slutligen kan du om du bara vill lista hur många besökare det är per vecka använda DATEPART(week, Datum) istället.Sv: Sumrering i SQL-sats (Datum)
Jag antar att du bara lagrar datum och inte tidsangivelse.
Du kan t.ex. skriva så här:
<code>
<TABLE>
<%
Public Function FirstWeekDay(Value)
FirstWeekDay = DateAdd("d", 1 - Weekday(Value, vbUseSystemDayOfWeek), Value)
End Function
Dim rs
Dim con
Dim fldAntal
Dim fldDatum
Dim strSQL
Dim vDate
Dim vTemp
Dim vFirstDate
Dim vLastDate
vDate = Request.QueryString("date")
If IsDate(vDate) Then
vDate = CDate(vDate)
Else
vDate = Date()
End If
vFirstDate = FirstWeekDay(vDate)
vLastDate = DateAdd("ww", 1, vFirstDate)
strSQL = "SELECT Datum, Count(*) As Antal" & vbCrLf & _
"FROM Visitors" & vbCrLf & _
"WHERE Datum BETWEEN '" & vFirstDate & "' AND '" & vLastDate & "'" & vbCrLf & _
"GROUP BY Datum"
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=MinDatabas;" & _
"Data Source=MinSQLServer"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL
Set fldAntal = rs("Antal")
Set fldDatum = rs("Datum")
For vTemp = vFirstDate To vLastDate
Response.Write "<TR><TD>" & StrConv(WeekdayName(Weekday(vTemp)), vbProperCase) & "</TD><TD>"
If rs.EOF Then
ElseIf fldDatum.Value = vTemp Then
Response.Write fldAntal.Value
End If
Response.Write "</TD></TR>
Next
Set fldAntal = Nothing
Set fldDatum = Nothing
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
%>
</TABLE>
">Tidigare vecka | ">Nästa vecka
</code>