Avatar billede dbay Nybegynder
27. december 2007 - 08:30 Der er 12 kommentarer og
1 løsning

Sum på tekstfelt med tal

Hej Eksperten
Jeg har lige et lille probleme med at lave en sum på et tekstfelt der indeholder tal.

Værdier ser sådan ud
Umoms
123,00
156,00
4569,00

Jeg vil gerne lave en summering af værdier, men Sum virker ikke på tekst felter

Select Sum(Umoms), Navn
From MyTable
Group By Navn
Avatar billede nielle Nybegynder
27. december 2007 - 08:54 #1
Hvorfor laver du dem ikke bare om til et felt af en af taltyperne? Så slipper du helt automatisk for den slags problemstillinger.
Avatar billede jonhauge Nybegynder
27. december 2007 - 11:33 #2
hvis du ønsker at bibeholde din kolonne som tekst kan du også lave en beregnet kolonne som konverterer til valuta el. lign. - og så SUMME den
Avatar billede hrc Mester
27. december 2007 - 21:34 #3
Lidt nysgerrig. Hvad er begrundelsen for at have det som et tekstfelt?
Avatar billede dbay Nybegynder
28. december 2007 - 08:22 #4
Ja det er desværre ikke mig der har lavet databasen og jeg her ikke mulighed for at lave feltet om til et tal. Derfor er jeg nødsaget til at leve med det som et tekst felt. Jeg har blot fået til opgave at lave noget statistik på systemet og til det skal jeg bruge summering på dette tekst felt.
Avatar billede nielle Nybegynder
28. december 2007 - 21:19 #5
Et bud:

SELECT sum( cast(Umoms, real) ) AS sumUmoms, Navn
FROM MyTable
GROUP BY Navn
Avatar billede nielle Nybegynder
28. december 2007 - 21:20 #6
Uhm:

SELECT sum( cast(Umoms as real) ) AS sumUmoms, Navn
FROM MyTable
GROUP BY Navn
Avatar billede hrc Mester
28. december 2007 - 22:26 #7
Uden at have kørt sammenligninger på at caste tror jeg det kan blive en ret tung operation. Jeg er måske lidt forudintaget, men funktioner i SQL har ikke ry for at være hurtige... Ville nok foretrække jons løsning med et spejlet talfelt som enten blev opdateret ved indsættelse eller før statistikken ("update xyz set isum = ssum". Evt. med "where isum is null")

Måske kan man lave det med triggere, men jeg kan ikke hitte ud af hvordan man fanger den netop indsatte eller opdaterede record. Måske bliver man nødt til at lave førnævnte update alligevel.
Avatar billede nielle Nybegynder
29. december 2007 - 07:15 #8
Der skal i hvert fald den where-del på for elers er det samtlige felter der updates, og ved "... SET isum = ssum ..." vil der under alle omstændigheder ske en cast.
Avatar billede dbay Nybegynder
29. december 2007 - 12:24 #9
Prøvede
SELECT sum( cast(Umoms as real) ) AS sumUmoms, Navn
FROM MyTable
GROUP BY Navn

og Fik følgende fejl:
Error converting data type varchar to real.
Mon det har noget at gørre med at decimaltegn er komma og ikke punktum? Det kan cast funktionen vist ikke håndtere.
Er der en løsning på det? Decimaltegn er sat til komma i kontrolpanel.
Avatar billede nielle Nybegynder
29. december 2007 - 14:44 #10
Så prøv:

SELECT sum( cast( replace(Umoms, ',', '.') as real) ) AS sumUmoms, Navn
FROM MyTable
GROUP BY Navn

og se om det klare sagen.
Avatar billede dbay Nybegynder
29. december 2007 - 15:14 #11
Det var lige det der skulle til.
Tak for hjælpen nielle.

Hvordan kan jeg egentlig give dig point? Er der noget med at du sender et svar og jeg så kan give dig point? Hvis det er sådan må du gerne snde et svar.
Avatar billede nielle Nybegynder
29. december 2007 - 18:22 #12
Svar :^)
Avatar billede nielle Nybegynder
07. januar 2008 - 18:03 #13
Så mangler du bare at acceptere mit svar :^)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester