2017-10-12 20 views
0

として、私はソートフォーマットされた日付列が日付

   WITH c1 as ( 
SELECT FORMAT(CompletedDate,'MMMM yyyy') as FormattedDate, 
COUNT(CASE WHEN CoId =5 then 1 ELSE NULL END) as "SSS", 
COUNT(CASE WHEN CoId =3 then 1 ELSE NULL END) as "EEE" 
    FROM Rtml5 
    where CompletedDate>='2017-01-01' AND CompletedDate<= '2017-12-31' 
group by FORMAT(CompletedDate,'MMMM yyyy') 
), 
c2 As (
    SELECT FORMAT(CompletedDate,'MMMM yyyy') as FormattedDate,COUNT(Rawew_ID) as MMM 
    FROM Rawew 
    where CompletedDate>='2017-01-01' AND CompletedDate<= '2017-12-31' 
group by FORMAT(CompletedDate,'MMMM yyyy') 
) 
SELECT coalesce(c1.FormattedDate, c2.FormattedDate) as FormattedDate, c1.SSS,c1.EEE,c2.MMM 
FROM c1 FULL OUTER JOIN c2 on c1.FormattedDate = c2.FormattedDate 

以下のように唯一の年と月の名前の文字列に日付列の書式を設定していますし、私は(CompletedDate、「MMMMのYYYY」)FORMATでグループを使用このフォーマットされたコラム に私は

April 2017 
    August 2017 
    February 2016 
    January 2017 
    July 2016 
    June 2017 
    March 2017 
    May 2017 
    October 2017 
    September 2017 

以下のような結果を取得しています。しかしどのように私は、日付列自体としてこれを並べ替えることができます。私は2016年2月、2016年7月、2017年2月に順番に結果を望んでいます。

+0

「完了日」にソートを試してください。 'CompletedDate'の形式は何ですか?完全なクエリ – Sinto

+1

をサンプルデータと希望の結果を追加してください。 –

答えて

1

代わりに、年と月を並べ替えて並べ替える必要があります。

WITH c1 as ( 
    SELECT FORMAT(CompletedDate,'MMMM yyyy') as FormattedDate, 
     datepart(year,CompletedDate) YearNr,datepart(month,CompletedDate) MonthNr 
     COUNT(CASE WHEN CoId =5 then 1 ELSE NULL END) as "SSS", 
     COUNT(CASE WHEN CoId =3 then 1 ELSE NULL END) as "EEE" 
    FROM Rtml5 
    where CompletedDate>='2017-01-01' AND CompletedDate<= '2017-12-31' 
    group by datepart(year,CompletedDate),datepart(month,CompletedDate), 
     FORMAT(CompletedDate,'MMMM yyyy') 
    ), 
c2 As (
    SELECT FORMAT(CompletedDate,'MMMM yyyy') as FormattedDate,COUNT(Rawew_ID) as MMM, 
     datepart(year,CompletedDate) YearNr,datepart(month,CompletedDate) MonthNr 
    FROM Rawew 
    where CompletedDate>='2017-01-01' AND CompletedDate<= '2017-12-31' 
    group by datepart(year,CompletedDate),datepart(month,CompletedDate), 
     FORMAT(CompletedDate,'MMMM yyyy') 
) 

SELECT coalesce(c1.FormattedDate, c2.FormattedDate) as FormattedDate, c1.SSS,c1.EEE,c2.MMM 
FROM c1 
FULL OUTER JOIN c2 on c1.FormattedDate = c2.FormattedDate 
order by coalesce(c1.YearNr,c2.YearNr),coalesce(c1.MonthNr,c2.MonthNr) 
+0

フォーマットを使用して日付をフォーマットされた方法で表示しているので、完全なクエリをご覧ください。 –

+0

@JibinMathew質問を使用して回答を更新しました。 – Peter

関連する問題