18. juli 2005 - 10:25Der er
11 kommentarer og 1 løsning
samle data efter måned
jeg har en række records som oprettes med en dato. hvordan kan jeg samle dem så jeg kan vise udviklingen per måned. (der er også en kolonne med beløb for hver post som jeg også gerne vil samle per måned, samt vise antal records for den pågældende måned)
jeg bruger ms sql og felterne har datatypen datatime
håber der er nogen som kan hjælpe. det virker måske lidt tricky
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
<% Session.LCID= 1033 Function ConvertToSqlDate(dato) dim SQLYear,SQLMonth,SQLDay SQLYear = Year(dato) SQLMonth = Month(dato) SQLDay = Day(dato) if SQLDay<10 then SQLDay = 0&SQLDay end if if SQLMonth<10 then SQLMonth = 0&SQLMonth end if ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear End Function %> <% Dim rsClaims Dim rsClaims_numRows
Set rsClaims = Server.CreateObject("ADODB.Recordset") rsClaims.ActiveConnection = MM_claims_conn_STRING rsClaims.Source = "SELECT * FROM dbo.tblClaims WHERE (DateOfDamage between '" & ConvertToSqlDate(Request.Form("startdate")) & "' and '" & ConvertToSqlDate(Request.Form("enddate")) & "') order by routeplaceID asc" rsClaims.CursorType = 0 rsClaims.CursorLocation = 2 rsClaims.LockType = 1 rsClaims.Open()
Hvad mener du med at "samle dem"?? Som jeg kan se det burde dit script hente alle resultater inden for "startdate" og "enddate", så hvis det bare er den første og sidste dag i måneden får du alle de resultater.
jeg vil gerne samle dem per måned. så hvis jeg søger på 01-01-2005 til 31-07-2005 så samler dem resulateterne og opstiller dem for januar, februar osv.
Så skal du have ændret din "order by" til at køre på datoen, så resultaterne er sorteret herefter og ikke efter routeplaceID (kan være sekundær sortering)
Dernæst skal du tjekke hvilken måned resultater er i og sammenligne det med forige resultat:
oldMonth = 0 while not rsClaims.eof if oldMonth <> month(rsClaims("DateOfDamage")) then response.write monthname(month(rsClaims("DateOfDamage"))) &"<br>" end if response.write rsClaims("nogetData") & "<br>" oldMonth = month(rsClaims("DateOfDamage")) rsClaims.MoveNext wend
i stedet for at vise: response.write rsClaims("IDclaim") & "<br>" kunne jeg så bare tælle dem sammen så i stedet for at vise hver id viser jeg bare hvor mange der er ?
rsClaims.Source = "select count(IDclaim) as antal, year(DateOfDamage) as thisYear, month(DateOfDamage) as thisMonth FROM dbo.tblClaims WHERE (DateOfDamage between '" & ConvertToSqlDate(Request.Form("startdate")) & "' and '" & ConvertToSqlDate(Request.Form("enddate")) & "') group by year(DateOfDamage), month(DateOfDamage) order by year(DateOfDamage), month(DateOfDamage) " ... while not rsClaims.eof response.write monthname(rsClaims("thisMonth")) &"<br>" response.write rsClaims("antal") &"<br>" rsClaims.moveNext wend
Du skal ikke have year() funktionen omkring rsClaims("thisYear"). Det er allerede årstallet (lavet gennem SQL), så du skal bare udskrive rsClaims("thisYear").
thanks fennec! må du meget undskylde den svar tilbagemelding
Synes godt om
Ny brugerNybegynder
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.