fungerar det inte med:
[red]sql = " select namn, efternamn, sum(antaltimmar) as resultat from utbildningen "
set rs = con.execute ( sql )[/red]
11 svar · 337 visningar · startad av jonas76
Jag har en sats som är följande:
sql="select sum(antaltimmar) as resultat from utbildningsprogram"
hur lägger jag in i den satsen så den hämtar upp flera kolummner från databasen tex :namn, efternamn osv så jag kan redovisa vilka personer som jag har summerat från.
Tacksam för svar.
fungerar det inte med:
[red]sql = " select namn, efternamn, sum(antaltimmar) as resultat from utbildningen "
set rs = con.execute ( sql )[/red]
sql="select sum(antaltimmar) as resultat,namn, efternamn from utbildningsprogram group by namn, efternamn "
Alla kolumner som finns med i group by måste också finnas med i select-listan.
Jag far en del felmedelande.
Jag postar hela min kod sa kan ni se hur den ser ut, det jag vill ar att aven hamta upp kolumnerna : fnamn, enamn, utbildning fran databasen.
sa sidan skall redovisa total antal timmar och vilka personer som sokkriteriet stammer med.:
<%
dim sokord1, sokord2, sokord3
sokord1=request.form("sokord1")
sokord2=request.form("sokord2")
sokord3=request.form("sokord3")
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram where 1=1"
if sokord1 \<\> "All" then
stm = stm & "and konto = '" & sokord1 & "' "
end if
if sokord2 \<\> "All" then
stm = stm & "and manad = '" & sokord2 & "' "
end if
if sokord3 \<\> "All" then
stm = stm & "and ar = " & sokord3 & " "
end if
set rs = connection.execute(stm)
if isnull(rs("resultat")) then
resultat = 0
else
resultat = round(rs("resultat"))
end if
rs.close
connection.close
set connection = nothing
%>
Account: <%=sokord1%><br>
Month: <%=sokord2%><br>
Year: <%=sokord3%><br>
Training hours: <%=resultat%><BR>
huum natt som verkar spoka ar det om jag tar bort fran sql satsen "where 1 = 1 " sa far jag "from clause" felmedelande men har jag kvar " where 1=1 " sa verkar det som den inte gillar att man lagger in fler select kriterier for da far jag foljande fel:
You tried to execute a query that does not include the specified expression 'fnamn' as part of an aggregate function.
Hjalper detta natt pa vagen ??
om jag andrar : stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram where 1=1"
till : stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram group by antaltimmar "
sa funkar det oxa men sa fort jag lagger till :
stm = "Select fnamn, Sum(antaltimmar) as resultat From utbildningsprogram group by antaltimmar, fnamn"
sa blir det felmedeland : You tried to execute a query that does not include the specified expression 'fnamn' as part of an aggregate function...
fattar ingetting????????
när du använder group by måste alla fält i din select, vara med i group by eller måste det vara en aggregat-funktion.
En liten chansning, om du struntar i att ge summeringen ett namn:
stm = "Select fnamn, Sum(antaltimmar) From utbildningsprogram group by antaltimmar, fnamn"
och använder tex rs(1) istället. Vill minnas att jag fått knas med liknande.
Annars testa med:
stm = "Select Sum(antaltimmar) as resultat, fnamn From utbildningsprogram group by antaltimmar, fnamn"
detta funkar nastan : stm = "Select Sum(antaltimmar) as resultat, fnamn From utbildningsprogram group by fnamn, antaltimmar "
men da far jag bara antalet timmar i forsta raden i databasen, den summerar tydligen inte, men kor jag bara "sum" funktionen utan "fnamn" med sa summerar den korrekt.
variabeln resultat är den som ska innehålla det totala, summerade antalet timmar väl? Och det gör den alltså inte?
En variant är väl också att köra:
stm = "Select Sum(antaltimmar) as resultat, fnamn, antaltimmar From utbildningsprogram group by fnamn, antaltimmar"
Nej tyvarr det funka inte , jag kan ju inte fatta varfor summeringen slutar att funka bara for att man lagger till fler saker i select satsen?????
Jag loste det faste inte riktigt som jag tankt men om det ar nagon som udrar hur sa postar jag sidan ifall nagon anna skulle behova veta nagon gang..
<%
dim sokord1, sokord2, sokord3
sokord1=request.form("sokord1")
sokord2=request.form("sokord2")
sokord3=request.form("sokord3")
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram where 1=1 "
if sokord1 \<\> "All" then
stm = stm & "and konto = '" & sokord1 & "' "
end if
if sokord2 \<\> "All" then
stm = stm & "and manad = '" & sokord2 & "' "
end if
if sokord3 \<\> "All" then
stm = stm & "and ar = " & sokord3 & " "
end if
set rs = connection.execute(stm)
if isnull(rs("resultat")) then
resultat = 0
else
resultat = round(rs("resultat"))
end if
%>
Account: <%=sokord1%><br>
Month: <%=sokord2%><br>
Year: <%=sokord3%><br>
Training hours: <%=resultat%><BR>
<hr>
<%
rs.close
set connection=nothing
%>
<%
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"
stm = "Select * from utbildningsprogram where 1=1"
if sokord1 \<\> "All" then
stm = stm & "and konto = '" & sokord1 & "' "
end if
if sokord2 \<\> "All" then
stm = stm & "and manad = '" & sokord2 & "' "
end if
if sokord3 \<\> "All" then
stm = stm & "and ar = " & sokord3 & " "
end if
set rs = connection.execute(stm)
do until rs.eof
%>
<table>
<tr>
<td width="90">Anst Nr:</font> <font color="blue"><%=rs("anstnr")%></font></td>
<td width="100">Namn:</font> <font color="blue"><%=rs("fnamn")%></font></td>
<td width="100"></font> <font color="blue"><%=rs("enamn")%></font></td>
<td width="100">Konto:</font> <font color="blue"><%=rs("konto")%></font></td>
<td>Utbildning:</font> <font color="blue"><%=rs("utbildning")%></font></td></tr>
</table>
<table><tr>
<td width="200">Syfte:</font> <font color="blue"><%=rs("syfte")%></font></td>
<td width="100">Typ:</font> <font color="blue"><%=rs("typ")%></font></td>
<td width="250">Trainer</font> <font color="blue"><%=rs("tranare")%></font></td>
</tr>
</table>
<hr>
<%
rs.movenext
loop
rs.close
set connection=nothing
%>