Avatar billede mikkelakc Nybegynder
23. juni 2003 - 09:48 Der er 5 kommentarer

betingelse på attributter

Hej
Jeg har en tabel der ser således ud:
Tabel A
{
recNr    int -- primary key
id      varchar
dato    datetime
...
fravaer  varchar
timer    int     
}

Jeg skal en query  som laver sum(timer) hvis attributten fravaer får værdien 'b' 4 gange på samme dato og samme id.
jeg bruger MSSQL server 2000
min query ser således ud:
...
(SELECT SUM(TIMER)
FROM  A WS
WHERE     WS.id        = W.id
    AND WS.dato = W.dato
    AND FRAVAER    = 'b') AS b, 
      -- her er problemet hvor kun sum(timer) skal lægge sammen hvis FRAVAER = 's' 4 gange på samme id og samme dato

Tak
Mikkel
Avatar billede venne Nybegynder
23. juni 2003 - 10:06 #1
Jeg er ikke helt sikker på at jeg forstår dig 100%, men prøv lige denne:

SELECT id, dato, SUM(TIMER)
FROM  A WS
WHERE    WS.id        = W.id
    AND WS.dato = W.dato
    AND FRAVAER    = 'b'
GROUP BY id, dato
HAVING COUNT(*) = 4
Avatar billede mikkelakc Nybegynder
23. juni 2003 - 11:32 #2
Hej Igen
Nu virker det snart tak for det
Jeg får stadig en underlig fejl, jeg har indsat den orginale kode jeg får følgende fejl:

***********
Server: Msg 156, Level 15, State 1, Line 10
Incorrect syntax near the keyword 'AND'.
Server: Msg 170, Level 15, State 1, Line 12
Line 12: Incorrect syntax near '>'.
***********
Fejlen er i linien "AND  (select count(S)" S er en varchar måske der for


SELECT  DISTINCT CNR,ID,NR,DATO,
(SELECT SUM(TIMER)
FROM  FRAVAERSOPLYSNING WS
WHERE      WS.NR        = W.NR
    AND WS.CNR          = W.CNR
    AND WS.KODEID = W.KODEID
    AND WS.DATO          = W.DATO
    AND FRAKODEID    = 'S') AS S               
    AND  (select count(S)
        where (WS.NR = W.NR and WS.ID = W.STILLINGSKODEID
                and WS.DATO = W.DATO) >= 4,

Tak igen
Avatar billede venne Nybegynder
23. juni 2003 - 11:51 #3
Det er lidt svært at sige noget om nå du ikke viser hele forespørgslen. Men det ser lidt kompliceret ud. Er det nødvendigt med alle de sub-selects? Og den med count(S) er der ikke nogen FROM-del på.
Hvad er det egentlig du vil opnå?
Avatar billede mikkelakc Nybegynder
23. juni 2003 - 11:59 #4
Det jeg vil opnå er: sum på timer, hvis attributten kodeID indholder værdien 'S' 4 gange samme 4 dato'er i træk

Vh
Mikkel
Avatar billede venne Nybegynder
23. juni 2003 - 16:03 #5
Du må vise os hele forespørgslen der fejler. Det sidste du skrev slutter lidt umotiveret med et komma.
Hvad er der i de to tabeller W og WS - de har næsten de samme attributter - hvorfor?
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