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.
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.