Essi come immaginavo era una svista dato l'orario, ad ogni modo per avere Username e poi di seguito tutti i mesi ho scritto questa query:
codice:
SELECT posts.userName as Username1, count(*) AS Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, ISNULL(Dicembre, 0)
FROM posts
LEFT OUTER JOIN
(SELECT posts.userName as Username2, count(*) AS Febbraio
FROM posts
WHERE posts.date >='2007-02-02 00:00' AND posts.date <='2007-03-01 00:00'
GROUP BY posts.date >='2007-02-01 00:00' AND posts.date <='2007-03-01 00:00', posts.userName)
ON Username1 = Username2
LEFT OUTER JOIN
(SELECT posts.userName as Username3, count(*) AS Marzo
FROM posts
WHERE posts.date >='2007-03-01 00:00' AND posts.date <='2007-04-01 00:00'
GROUP BY posts.date >='2007-03-01 00:00' AND posts.date <='2007-04-01 00:00', posts.userName)
ON Username1 = Username3
LEFT OUTER JOIN
(SELECT posts.userName as Username4, count(*) AS Aprile
FROM posts
WHERE posts.date >='2007-04-01 00:00' AND posts.date <='2007-05-01 00:00'
GROUP BY posts.date >='2007-04-01 00:00' AND posts.date <='2007-05-01 00:00', posts.userName)
ON Username1 = Username4
LEFT OUTER JOIN
(SELECT posts.userName as Username5, count(*) AS Maggio
FROM posts
WHERE posts.date >='2007-05-01 00:00' AND posts.date <='2007-06-01 00:00'
GROUP BY posts.date >='2007-05-01 00:00' AND posts.date <='2007-06-01 00:00', posts.userName)
ON Username1 = Username5
LEFT OUTER JOIN
(SELECT posts.userName as Username6, count(*) AS Giugno
FROM posts
WHERE posts.date >='2007-06-01 00:00' AND posts.date <='2007-07-01 00:00'
GROUP BY posts.date >='2007-06-01 00:00' AND posts.date <='2007-07-01 00:00', posts.userName)
ON Username1 = Username6
LEFT OUTER JOIN
(SELECT posts.userName as Username7, count(*) AS Luglio
FROM posts
WHERE posts.date >='2007-07-01 00:00' AND posts.date <='2007-08-01 00:00'
GROUP BY posts.date >='2007-07-01 00:00' AND posts.date <='2007-08-01 00:00', posts.userName)
ON Username1 = Username7
LEFT OUTER JOIN
(SELECT posts.userName as Username8, count(*) AS Agosto
FROM posts
WHERE posts.date >='2007-08-01 00:00' AND posts.date <='2007-09-01 00:00'
GROUP BY posts.date >='2007-08-01 00:00' AND posts.date <='2007-09-01 00:00', posts.userName)
ON Username1 = Username8
LEFT OUTER JOIN
(SELECT posts.userName as Username9, count(*) AS Settembre
FROM posts
WHERE posts.date >='2007-09-01 00:00' AND posts.date <='2007-10-01 00:00'
GROUP BY posts.date >='2007-09-01 00:00' AND posts.date <='2007-10-01 00:00', posts.userName)
ON Username1 = Username9
LEFT OUTER JOIN
(SELECT posts.userName as Username10, count(*) AS Ottobre
FROM posts
WHERE posts.date >='2007-10-01 00:00' AND posts.date <='2007-11-01 00:00'
GROUP BY posts.date >='2007-10-01 00:00' AND posts.date <='2007-11-01 00:00', posts.userName)
ON Username1 = Username10
LEFT OUTER JOIN
(SELECT posts.userName as Username11, count(*) AS Novembre
FROM posts
WHERE posts.date >='2007-11-01 00:00' AND posts.date <='2007-12-01 00:00'
GROUP BY posts.date >='2007-11-01 00:00' AND posts.date <='2007-12-01 00:00', posts.userName)
ON Username1 = Username11
LEFT OUTER JOIN
(SELECT posts.userName as Username12, count(*) AS Dicembre
FROM posts
WHERE posts.date >='2007-12-01 00:00' AND posts.date <='2008-01-01 00:00'
GROUP BY posts.date >='2007-12-01 00:00' AND posts.date <='2008-01-01 00:00', posts.userName)
ON Username1 = Username12
WHERE posts.date >='2007-01-01 00:00' AND posts.date <='2007-02-01 00:00'
GROUP BY posts.date >='2007-01-01 00:00' AND posts.date <='2007-02-01 00:00', posts.userName
Essendo però che in alcuni casi il valore è nullo volevo fare in modo che mi sostituisse il valore nulle con 0 (invece del ?) e leggevo su internet che bastava scrivere ISNULL(campo,0) ma mi da errore, dove sbaglio? (per ora l'ho scritto solo sul campo dicembre ma dovrei inserirlo su tutti).