Skip to content
Advertisement

SQL pivot and group by month

I’m trying to get the sum of production per month and pivot the month row to columns. Could you please tell me what is wrong with this code?’

select *
from (
    select datename(month,day), UnitId, sum(pv_production) as production, year(day)
    from MeterReading
    group by datename(month,day), UnitId, year(day))  p
    pivot ( 
        max(pv_production) for datename(month, day) in ([January], [February], [March], [April], [May], [June], [July], [August], [September], [October], [November], [December]
    )
) as pp

Advertisement

Answer

There were several items wrong in your query. Columns need aliases and your max() within the PIVOT was referencing an invalid column name

Select *
  From (
        Select [Month] = datename(month,day)
             , [Year]  = year(day)
             , UnitId
             , production = sum(pv_production) 
         From  MeterReading
         Group By datename(month,day)
                 ,year(day)
                 ,UnitId 
       )  Src
 Pivot ( max(production) for [Month] in ([January]
                                        ,[February]
                                        ,[March]
                                        ,[April]
                                        ,[May]
                                        ,[June]
                                        ,[July]
                                        ,[August]
                                        ,[September]
                                        ,[October]
                                        ,[November]
                                        ,[December] ) ) Pvt
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement