PDA

View Full Version : [SQL]Sum, Case, When


RaouL_BennetH
14-11-2010, 01:42
Ciao a tutti :)

Riprendendo del vecchissimo codice ho da modificare alcune cose ad una vista:



--vecchia sp

SELECT p.empID, p.surname, p.name, p.[1], p.[2], p.[3], p.[4],
p.[5], p.[6], p.[7]

FROM

(SELECT empID, surname, name, DATEPART(day, date) as theDate,
totale) AS pvt

PIVOT
(SUM(totale) FOR pvt.theDate IN ([1], [2], [3], [4], [5], [6], [7])) AS tmp

GO



Ora, la 'select' dev'essere ampliata e ho questo nuovo caso per un campo in più:



--il campo in aggiunta indica un'assenza (nchar(2))

-- (1) se per il giorno 'X' c'è un totale
-- (2) se per il giorno 'X' non c'è un totale e non c'è un'assenza
-- (3) se per il giorno 'X' non c'è un totale e c'è un'assenza

--Ho ragionato così:

SELECT p.empID, p.surname, p.name, p.[1], p.[2], p.[3], p.[4],
p.[5], p.[6], p.[7]

FROM

(SELECT empID, surname, name, datepart(day, date) as theDate,
totale, assenza) AS pvt



PIVOT(SUM(CASE WHEN assenza IS NULL THEN totale ELSE 0 END) for pvt.theDate IN ([1], [2], [3], [4], [5],
[6], [7])) AS tmp

GO



Mi da sempre errore di sintassi ma credo di capire che le condizioni io debba gestirle nella 'SELECT'

Se provo a farlo ottengo:


La colonna 'ViewEmployeeItems.empID' non è valida nell'elenco di selezione
perchè non è inclusa nè in una funzione di aggregazione
nè nella clausola GROUP BY


Grazie a tutti :)

RaouL.