SQL Server:查询以返回月份名称而不是数字

SQL Server:查询以返回月份名称而不是数字,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的目标是返回一行月份名称,列为Year。这是为了得到每年和每月表中一个特定租户的销售额之和 我已经开始写这段代码了 select month(date) month, isnull(sum(case when year(DATE) = 2015 then sales end), 0) as '2015' from tblSales where tenantcode = 'cmbina13' group by month(date) orde

我的目标是返回一行月份名称,列为
Year
。这是为了得到每年和每月表中一个特定租户的销售额之和

我已经开始写这段代码了

select   
    month(date) month,
    isnull(sum(case when year(DATE) = 2015 then sales end), 0) as '2015'
from 
    tblSales
where 
    tenantcode = 'cmbina13'
group by  
    month(date)
order by 
    month(date)
我得到了这个结果:

这些数字是正确的。然而,我想让month列变成month名称。如下图所示,按需要输出


将函数与
日期部分一起使用,而不是
函数

select  datename(month,date) [month]
       ,isnull(sum(case when year(DATE) = 2015 then sales end), 0) as '2015'
from tblSales
where tenantcode = 'cmbina13'
group by  datename(month,date)
Order by DATEPART(MM,datename(month,date)+' 01 2011')

使用带有
Month
datepart的函数代替
Month
function

select  datename(month,date) [month]
       ,isnull(sum(case when year(DATE) = 2015 then sales end), 0) as '2015'
from tblSales
where tenantcode = 'cmbina13'
group by  datename(month,date)
Order by DATEPART(MM,datename(month,date)+' 01 2011')


看看这个,为什么你真的想做这样的事情?让您的表示层处理表示内容。如果在sql中处理,会不会产生严重影响?我同意,在表示层中处理命名是一种更好的做法,除非这纯粹是出于报告目的。我理解,但在某些情况下,我们需要查看后报告,因此需要这样做。但是我已经有了在我的表示层中进行转换的代码,比如在ASP.NET和Crystal Report中,这比在SQL中要容易得多,因为我对它的知识有限。看看这个,为什么你真的想做这样的事情?让您的表示层处理表示内容。如果在sql中处理,会不会产生严重影响?我同意,在表示层中处理命名是一种更好的做法,除非这纯粹是出于报告目的。我理解,但在某些情况下,我们需要查看后报告,因此需要这样做。但是我已经有了在我的表示层中进行转换的代码,比如在ASP.NET和Crystal Report中,这比在SQL中要容易得多,因为我对它的了解有限。错误先生:“tblSales.date”列在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@rickyProgrammer-立即检查是的,它起作用了,但存在排序问题。从1月1日起,应按正确顺序进行:Dec@rickyProgrammer堆栈溢出不是给我代码。你应该足够聪明来解决这个错误,或者坦率地说,去雇一个人。@rickyProgrammer-现在检查更新了,Ic说是真的,你可以找出简单的错误错误错误错误先生:“tblSales.date”列在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@rickyProgrammer-现在检查是的,但存在排序问题。从1月1日起,应按正确顺序进行:Dec@rickyProgrammer堆栈溢出不是给我代码。你应该足够聪明来解决这个错误,或者坦率地说去雇佣一些人。@rickyProgrammer-检查现在更新了,Ic说是真的,你可以找出简单的错误这将按字母顺序安排月份是的,是的。谢谢你的回答。。将此标记为一个有用的答案,供其他人需要此格式时参考。这将按字母顺序排列月份是的,是的。谢谢你的回答。。也将此标记为有用的答案,供其他人需要此格式时参考。