select publisherID,
sum(visad) as visningar,
sum(klick) as klickningar
from t
group by publisherID
Flyttas från ASP
10 svar · 254 visningar · startad av jimpa
Hej
Jag har en tabell som ser ut ungefär
ID : PublisherID : visad : Klick
1------- 2------- 50-----10
2------- 2------- 20------5
3------- 1------- 2 ------0
4------- 3------- 21------6
5------- 3------- 30------8
Problemet är hur själva loopen ska se ut för att räkna ihop värdet av klick samt visningar där 'PublisherID' är samma! Det svåra blir ju sen att jag vill bara att resp. PublisherID ska skrivas ut en gång.
Ifrån ex. ovan skulle jag vilja att resultatet skulle bli:
PublisherID (2) visningar 70 , klick 15
PublisherID (1) visningar 2 , klick 0
PublisherID (3) visningar 51 , klick 14
Någon som kan hjälpa mig lite på traven
select publisherID,
sum(visad) as visningar,
sum(klick) as klickningar
from t
group by publisherID
Flyttas från ASP
hmm.
Mitt ex. tidigare var en förenklad historia, provade att summera direkt i SQL-satsen men får det inte att stämma riktigt.
SQL'n ser ut så här:
SQL = "Select LogID, lBannerID, lAnnouncerID, lTypeID, lZoneID, lClicks, lHits, SUM(lHits) as sumHits, SUM(lClicks) as sumClicks FROM bLog"
If Request("bAnnouncerID") <> "" Then
strWhere = " WHERE lAnnouncerID =" & Request("bAnnouncerID") & " "
else
strWhere = ""
End If
If Request("bZoneID") <> "" Then
if strWhere <> "" then
strWhere = strWhere & "AND lZoneID =" & Request("bZoneID") & " "
else
strWhere = " WHERE lZoneID =" & Request("bZoneID") & " "
end if
End If
If Request("bTypeID") <> "" Then
if strWhere <> "" then
strWhere = strWhere & "AND lTypeID =" & Request("bTypeID") & " "
else
strWhere = " WHERE lTypeID =" & Request("bTypeID") & " "
end if
End If
If Request("Qdte") <> "" Then
FromDte = Request("Qdte")
if FromDte = "toDay" then
if strWhere <> "" then
strWhere = strWhere & " AND lDte =#" & Date() & "# "
else
strWhere = strWhere & " WHERE lDte =#" & Date() & "# "
end if
else
strWhere = strWhere
end if
End If
strOrder = " GROUP BY LogID, lBannerID, lAnnouncerID, lTypeID, lZoneID, lClicks, lHits ORDER BY lAnnouncerID"
SQL = SQL & strWhere & strOrder
och loopen
Set RS = Conn.Execute(SQL)
If NOT RS.EOF Then
Do until RS.EOF
Response.Write "AnnonsID: " & RS("lAnnouncerID") & " lHits: " & RS("lHits") & " lClicks: " & RS("lClicks") & " Summa Hits: " & RS("sumHits") & " Summa Klick: " & RS("sumClicks") & "<br>"
RS.MoveNext
Loop
End If
och resultatet
AnnonsID: 11 lHits: 3 lClicks: 0 Summa Hits: 3 Summa Klick: 0
AnnonsID: 14 lHits: 2 lClicks: 0 Summa Hits: 2 Summa Klick: 0
AnnonsID: 14 lHits: 6 lClicks: 0 Summa Hits: 6 Summa Klick: 0
AnnonsID: 16 lHits: 7 lClicks: 0 Summa Hits: 7 Summa Klick: 0
AnnonsID: 16 lHits: 2 lClicks: 0 Summa Hits: 2 Summa Klick: 0
Jag vill att resultatet ska bli
AnnonsID: 11 Summa Hits: 3 Summa Klick: 0
AnnonsID: 14 Summa Hits: 8 Summa Klick: 0
AnnonsID: 16 Summa Hits: 9 Summa Klick: 0
Jag vill alltså att summan för hits och klicks skall skrivas ut en gång för varje AnnonsID
Någon som har nåt förslag?
Du får välja, om du vill ha det resultatet så kan du inte ha med dom andra kolumnerna i select-listan
Ok jag misstänkte det..
Men hur kan man göra för att få ut det resultatatet jag eftersträvar
Måste ju gå på nåt annat sätt..nån idé.. någon
LarsG: Kanske borde denna tråd flyttas tillbaka till ASP?
Jo, kanske det. Om du vill ha alla värden och även summera så får du sköta summeringen själv.
Hämta värdena sorterade på annonsID och håll reda på när du får ett nytt värde för annonsID.
hmm
Om jag nu vill att resutatet ska skrivas ut så här
AnnonsID:11 Summa Hits: 3 Summa Klick: 0
- BannerID 1 lHits: 3 lClicks: 0
AnnonsID: 14 Summa Hits: 8 Summa Klick: 0
- BannerID 40 lHits: 2 lClicks: 0
- BannerID 21 lHits: 6 lClicks: 0
AnnonsID: 16 Summa Hits: 9 Summa Klick: 0
- BannerID 12 lHits: 7 lClicks: 0
- BannerID 42 lHits: 2 lClicks: 0
Alltså Skriva ut summan först som ex. ovan
Tacksam för alla förslag och idéer!!
Hallå....
Ingen som vet
dim a,q,rs,connect,i,pid, sumhit,sumklick
set connect = server.createobject("adodb.connection")
connect.open "dsn"
q = "select annonsid,bannerid,hits,klick from blog order by annonsid "
set rs = connect.execute(q)
if not rs.eof then
a = rs.getrows()
pid = 0
for i = 0 to ubound(a,2)
if pid <> clng(a(0,i)) then
pid = clng(a(0,i))
sumhit = 0
sumklick = 0
for j = i to ubound(a,2)
if pid <> clng(a(0,j)) then exit for
sumhit = sumhit + clng(a(2,j))
sumklick = sumklick + clng(a(3,j))
next
response.write "AnnonsID:" & pid & " Summa Hits: " & sumhit & " Summa klick: " & sumklick & "<br>"
end if
response.write " - BannerID " & a(1,i) & " lHits: " & a(2,i) & " lClicks: " & a(3,i) & "<br>"
next
else
response.write "Tomt"
end if
rs.close
set rs = nothing
connect.close
set connect = nothing
Tack LarsG!
Ska genast prova!