2016-11-16 3 views
1

Я написал этот код и работает. Он показывает общее количество т.д., сгруппированных по месяцам года, но я хочу показать месяцы, год в порядке возрастания, но он показывает их в случайном сортировкой т.е. июня 2016 года, май 2016 г. и т.д.Как отсортировать даты по возрастанию?

SELECT DATENAME(MONTH, pd.PaymentDate) + ' ' + DATENAME(YEAR, pd.PaymentDate) AS PDate, 
        SUM(Case when PT.PropertyTypeName = 'Commercial' then PD.PropertyDetailsTotalAmount else 0 END) as CommercialIncome, 
        SUM(Case when PT.PropertyTypeName = 'Residential' then PD.PropertyDetailsTotalAmount else 0 END) as ResidentialIncome, 
        COUNT(Case when PT.PropertyTypeName = 'Commercial' then PD.pk_PropertyDetails_PropertyDetailsID else NULL END) as TotalCommercialMaps, 
        COUNT(Case when PT.PropertyTypeName = 'Residential' then PD.pk_PropertyDetails_PropertyDetailsID else NULL END) as TotalResidentialMaps, 

        (Count(Case when PT.PropertyTypeName = 'Commercial' then PD.pk_PropertyDetails_PropertyDetailsID else NULL END) 
        + 
        COUNT(Case when PT.PropertyTypeName = 'Residential' then PD.pk_PropertyDetails_PropertyDetailsID else NULL END)) TotalMaps, 

        (SUM(Case when PT.PropertyTypeName = 'Commercial' then PD.PropertyDetailsTotalAmount else 0 END) 
        + 
        SUM(Case when PT.PropertyTypeName = 'Residential' then PD.PropertyDetailsTotalAmount else 0 END)) as TotalIncome 

      From PropertyDetails PD 
      Inner Join Properties P 
      ON PD.fk_Properties_ID= p.pk_Properties_ID 
      Inner Join PropertyTypes PT 
      ON PT.pk_PropertyTypes_PropertyTypeID= P.fk_PropertyTypes_ID 
      where 
      PD.Paid= 1 
      and PaymentDate >= @DateFrom AND PaymentDate < DATEADD(day,1,@DateTo) 
      Group By DATENAME(MONTH, pd.PaymentDate) + ' ' + DATENAME(YEAR, pd.PaymentDate) 

ответ

-1

Простой в

.... 
group by DATENAME(MONTH,pd.PaymentDate) , DATENAME(YEAR,pd.PaymentDate),MONTH(pd.PaymentDate), YEAR(pd.PaymentDate) 
order by YEAR(pd.PaymentDate) desc, MONTH(pd.PaymentDate) desc 
+1

Будет ли это работать, поскольку оно не группируется? –

+1

Ошибка: \t \t \t ORDER BY pd.PaymentDate desc –

+0

Столбец «PropertyDetails.PaymentDate» недействителен в предложении ORDER BY, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY. –

1

вам необходимо сменить группу на

Group By DATENAME(MONTH, pd.PaymentDate) + ' ' + DATENAME(YEAR, pd.PaymentDate), DatePART(Month, pd.PaymentDate), DatePart(YEAR, pd.PaymentDate) 
order by DatePart(YEAR, pd.PaymentDate) asc, DatePART(Month, pd.PaymentDate) asc 

Или аналогичный.

0
group by DATENAME(MONTH,pd.PaymentDate) ,DATENAME(YEAR,pd.PaymentDate),MONTH(pd.PaymentDate),YEAR(pd.PaymentDate) 
order by YEAR(pd.PaymentDate) asc,MONTH(pd.PaymentDate) asc 
Смежные вопросы