SQLITE - SELECT CASE - dlaczego nie zlicz wg warunku

0

Witam
Mam taki oto kod

SELECT 
    COUNT (CASE WHEN DATA BETWEEN date('now','start of month') 
    AND date('now','start of month','+1week','-1 day') THEN ID_URLOPU ELSE 0 END) AS 'Tydzień 1',
    COUNT (CASE WHEN DATA BETWEEN date('now','start of month','+ 1 week') 
    AND date('now','start of month','+2week','-1 day') THEN ID_URLOPU ELSE 0 END) AS 'Tydzień 2', 
    COUNT (CASE WHEN DATA BETWEEN date('now','start of month','+ 2 week')  
    AND date('now','start of month','+3week','-1 day') THEN ID_URLOPU ELSE 0 END) AS 'Tydzień 3', 
    COUNT (CASE WHEN DATA BETWEEN date('now','start of month','+ 3 week')  
    AND date('now','start of month','+4week','-1 day') THEN ID_URLOPU ELSE 0 END) AS 'Tydzień 4',  
    COUNT (ID_URLOPU) AS 'RAZEM'
FROM OBECNOSCI WHERE ID_PRACOWNIKA = 1; 

Dlaczego nie zlicza mi obecnosci wg podanych przedziałów tylko od razu wszystko na raz i zwraca cos takiego

 1 wierszy przetworzonych w 0.015 sekund(y).
------------------------------------
Wyniki:

Tydzień 1       |Tydzień 2       |Tydzień 3       |Tydzień 4       |RAZEM           
----------------+----------------+----------------+----------------+----------------
7               |7               |7               |7               |7               
0

Użyj SUM zamiast Count

0

na pewno mozna uzyc +Xweek? +Xday?
patrze na http://www.sqlite.org/lang_datefunc.html i nie ma tam nic o week o day tez nie, jest days
sprawdz co zwraca kazde date(...)

a zamiast
date('now','start of month','+1week','-1 day') -- nie do konca rozumiem co dostaniesz po +1week -1day? niedziele?

proponuje
date('now','start of month','+7 days','weekday 0')

0

Nie mogę bo tabela wygląda tak:

DATA ID_PRACOWNIKA ID_URLOPU
2010-11-09 1 1
2010-11-11 1 2
2010-11-12 1 1
2010-11-13 1 2
2011-11-12 1 7
2010-11-08 1 1
2010-11-09 2 2
2010-11-11 2 2
2010-11-14 2 7
2010-11-08 6 1
0
massther napisał(a)

proponuje
date('now','start of month','+7 days','weekday 0')

Nawet

 SELECT COUNT(CASE WHEN DATA BETWEEN 2010-11-01 
    AND 2010-11-01 THEN ID_URLOPU ELSE 0 END) AS 'Tydzień 1'
    FROM OBECNOSCI WHERE ID_PRACOWNIKA = 1;

Zwraca

 1 wierszy przetworzonych w 0.015 sekund(y).
------------------------------------
Wyniki:

Tydzień 1       
----------------
7   

Chcę zrobić cross table query
Pomysł wziąłem stąd: http://sqlite.awardspace.us/syntax/sqlitepg09.htm

A co do week to miałeś rację. Nie wiem skąd mi się to wzięło.

Już wiem, co nie działa nie wiem tylko dlaczego:
Instrukcja CASE działa poprawnie dla SUM, a dla COUNT nie i z jakiegoś powodu zlicza wszystkie wiersze niezależnie od warunku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1