Avatar billede Morten Nybegynder
18. maj 2005 - 09:19 Der er 8 kommentarer og
1 løsning

Tælle og gange

Hej

Jeg har brug for noget input for at kunne lave understående, hvis det kan lade sig gøre?

Jeg har en tabel som indeholder kolonne med pris og en kolonne for hver måned som kan indeholde et Y eller ingenting, jeg skal gange antallet af Y'er i en række med prisen for at få totalpris for et år...

ID  |  Pris  |  01  |  02  |  03  |  04  |  05  | osv..
1      100,00              Y            Y
2      200,00      y
3      400,00              y            y      y

Jeg skal så få følgende resultat:

ID  |  total pris  |
1        200,00
2        200,00
3        1200,00

Kan det lade sig gøre i et view eller skal jeg programmerer det i PHP på hjemmesiden hvor resultatet skal vises?????
Avatar billede arne_v Ekspert
18. maj 2005 - 15:52 #1
prøv:

CREATE FUNCTION y1(@S VARCHAR) RETURNS INTEGER
AS
BEGIN
  RETURN CASE @S
            WHEN 'Y' THEN 1
            ELSE 0
          END
END

og

SELECT id, pris*(y1(jan)+y1(feb)+...+y1(dec)) FROM ...
Avatar billede ldanielsen Nybegynder
19. maj 2005 - 09:40 #2
Du kunne også lave det i én SELECT:



SELECT ID,
(CASE 01 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 02 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 03 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 04 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 05 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 06 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 07 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 08 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 09 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 10 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 11 WHEN 'Y' THEN 1 ELSE 0 END +
CASE 12 WHEN 'Y' THEN 1 ELSE 0 END) * Pris AS total_pris
FROM Tabel
Avatar billede arne_v Ekspert
19. maj 2005 - 10:23 #3
man kan godt gøre det inline, men hvis  nu de finder ud af at 'YES' og '1'
også skal være 1 så bliver det hurtigt grimt
Avatar billede Morten Nybegynder
19. maj 2005 - 10:35 #4
>>Arne V.

Hvor placerer du funktionen og Select sætningen?

"Normalt" ville jeg lave et view som jeg så accesser fra nettet via PHP.
Men det du har lavet skal det køres og så opretter jeg en ny tabel eller ???
Avatar billede arne_v Ekspert
19. maj 2005 - 11:18 #5
funktion definitionen skal bare køres en gang i databasen så kan den bruges
fremover

select skal bare bruges der hvor du skal hente data f.eks. i definitionen
af et view
Avatar billede Morten Nybegynder
19. maj 2005 - 14:35 #6
Kan du ikke forklare hvordan jeg kører funktion - eller give et link til en forklaring?
Avatar billede arne_v Ekspert
19. maj 2005 - 14:38 #7
Når du har defineret funktionen så bruger du den bare ligesom de indbyggede funktioner.

I dit tilfælde f.eks.:

SELECT id, pris*(y1(janfelt)+y1(febfelt)+...+y1(decfelt)) FROM årstabel
Avatar billede Morten Nybegynder
19. maj 2005 - 14:47 #8
Tak for hjælpen Arne - det vil jeg prøve - det lyder interessant

Vil du ikke smide et svar.
Avatar billede arne_v Ekspert
19. maj 2005 - 14:49 #9
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