09. august 2011 - 08:45Der er
9 kommentarer og 1 løsning
Forkert beregning i et View på View
Hej
Jeg har lavet et view, lad os kalde det view 1 og det virker precist som det skal.
SELECT TOP 100 PERCENT F0101 AS HHNR, F0116 AS uge, F0113 AS Shop, SUM(F0104) AS [Value], SUM(F0122) AS Volume, SUM(F0133) AS Antal, F0136 AS Ean FROM dbo.CT_data WHERE (Dato >= '06-05-2011') AND (F0117 <> 89) AND (F0136 IS NOT NULL) GROUP BY F0101, F0116, F0113, F0133, F0104, F0136
På resultatet af View 1, skal jeg så lave endnu et view, lad os kalde det view 2.
SELECT TOP 100 PERCENT Ean, uge, Shop, CONVERT(float, SUM(CONVERT(float, [Value]) / CONVERT(float, Volume))) AS EnhedsPris, COUNT(Ean) AS Handlinger FROM dbo.vi_HHNRean GROUP BY Ean, uge, Shop
Men problemet er, at jeg i view 2 får et forkert resultat for enkelte records for SUM beregningen. Jeg bruger convert og float for at få decimaler på tallene i viewet, da det ellers kun var heltal.
Databasen er på 12 millioner rekords, men view 1's where afgrænser det til ca 40.000 rekords. Kan det være noget med at den laver beregningerne i view 2 uden først at være færdig med at køre view 1, eller er det noget i min sum formel. Det er en MS SQL 2000 server, der køres på.
Datatypen float er tilnærmelsesvise/ omtrentlige, så måske fejlen ligger heri. Nu har jeg ingen mulighed for at inspicere dine data så det er svært lige at sige.
Lav datatypen om til decimal med høj precision og prøv igen :)
Jeg kan forresten ikke se nogen relation imellem dine 2 views, er du sikker på du har postet de rigtige?
Jeg ville gerne ha resultatet på 0,65, men får i stedet resultatet 11,05 for view 2. Så du er inde på det rigtige ErikJacobsen, at det skyldes den beregner hver rekord og summere resultatet. Hvordan får jeg den til at lave beregningen, som jeg ønsker det?
Prøver lige din også Erik, men tror også at den neden for giver mig det rigtige resultat. Men smid et svar Erik, så jeg kan lukke og du kan få point. Tak for hjælpen.
CONVERT(float, SUM(CONVERT(float, [Value]) / CONVERT(float, Volume)) / COUNT(Ean)) AS EnhedsPris
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.