我正在将日期列格式化为仅包含年份和月份名称的字符串,如下所示
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
然后我在FORMAT(CompletedDate,'MMMM yyyy')上使用了这个格式化列的组 我得到的结果如下
April 2017
August 2017
February 2016
January 2017
July 2016
June 2017
March 2017
May 2017
October 2017
September 2017
但是我如何将其作为Date列本身进行排序。我希望结果按照顺序2016年2月,7月206,Januaty2017,2017年2月....
答案 0 :(得分:1)
按年份和月份排序,他们需要在分组和cte结果中。
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)