webForumDet fria alternativet

summera formel i sql fråga?

Databaser & SQLur Databashanterare & SQL

4 svar · 1 886 visningar · startad av evilaid

Medlem sedan apr. 2009433 inlägg
Frågan#1

Hej

Jag vet att det ska gå men får inte till det riktgit. Det är så att jag vill räkna ihop vissa kolumner i ett fält och sumera resultatet av alla rader..

Frågan ser ut så här:
SQL = "SELECT sum() as ant FROM tbl_transportSizes AS ts LEFT OUTER JOIN tbl_transport AS t ON ts.transportID = t.id where week='"&request.QueryString("week")&"' "

dom klumner jag vill räkna ihop för varje fält är enligt:
Round((((db("length")/100)*(db("width")/100))/2.4),2)

försökte med detta:
SELECT sum(Round((((length/100)*(width/100))/2.4),2)
) as ant FROM tbl_transportSizes AS ts LEFT OUTER JOIN tbl_transport AS t ON ts.transportID = t.id where week='1110'

Får bara felet Ambiguous column name 'width'.

Mvh

Medlem sedan juni 200032 969 inlägg
#2

Får bara felet Ambiguous column name 'width'.

Då beror det på att fältet width finns i mer än en tabell i din SQL-fråga. Kvalificera fältet med tabellens namn.

... tbl_transportSizes.width ...
Medlem sedan apr. 2009433 inlägg
#3

ok. hittade lite fel

så här ska det vara
SELECT sum(Round((((ts.length/100)*(tw.width/100))/2.4),2)
) as ant FROM tbl_transportSizes AS ts LEFT OUTER JOIN tbl_transport AS t ON ts.transportID = t.id LEFT OUTER JOIN tbl_transportWidth AS tw ON ts.width = tw.id where week='1110'

men det rapporterar bara tillbaka 0,0000000 i ant, raderna hämtas ju korrekt om jag tar bort sumeringsdelen i frågan men vid sumering blir detbara 0 ?
ok att jag har kolumnen width i fler tabeller men nu har jag ju i sumeringfunktionen definiera det som tw.width , något annat som kan spöka?

Här hittade jag felet
sum(Round((tw.width/100),2)) as antal

frågan hämtar två rader, värdet för dom två raderna i tw.width är 80 och 60.. men hur kan det bli 0?
Dividerar jag med 10 istället för 100 så får jag svaret 14 med dividerar jag med 100 så blir 0 men borde ju bli 1,4??
formeln fungerar ju när jag kör den som ren asp kod men i SQL frågan blir det 0 ?

går detanvända något annat än round? felet verkar ju ligga där då det blir noll hela tiden

Medlem sedan maj 2000144 inlägg
#4

Känns som att du blandar heltal och decimaltal, då blir det noll.
Testa

sum(Round((((length/100.0)*(width/100.0))/2.4),2.0)

om length och width också är heltal så kan du behöva göra om de till decimaltal

sum(Round((((cast(length as decimal)/100.0)*(cast(width as decimal)/100.0))/2.4),2.0)
Medlem sedan apr. 2009433 inlägg
#5

ok, det där låter troligt faktsikt, ska prova det ikväll...

tack på förhand..

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