日期:2014-05-17  浏览次数:20459 次

sql server关于DateTime格式检索、别名的问题
原始的sql server表格式类似于,其中Time列为DateTime格式:
Name Count Time
路由器 3 2012.12.1
交换机 2 2011.12.1
防火墙 3 2010.12.1
集线器 4 2012.8.1
路由器 5 2012.12.1
交换机 1 2008.12.1
防火墙 2 2009.12.1
集线器 6 2011.8.1

想要检索出一个每年发放多少设备的表格,格式如下,其中Time列不是DataTime,是字符:
Name Count Time
设备 1 2008年
设备 2 2009年
设备 3 2010年
设备 8 2011年
设备 12 2012年

设想了一下,应该是要用存储过程,将2008,...,2012作为参数传递进去,select xxx where Time<2010 and Time >2011之类的方式来检索返回结果,但是还是不清楚具体怎么写代码实现,想问下大家意见。要求检索输出的格式要严格如上,无论是sql语句或是存储过程实现皆可,请指教,谢谢!
SQL?Server 存储过程 datetime

------解决方案--------------------
SELECT 
Name = N'设备',
[COUNT] = SUM([COUNT]),
[TIME] = LTRIM(YEAR([Time])) + N'年'
FROM tablename
GROUP BY YEAR([Time])
ORDER BY [TIME]

------解决方案--------------------
把DateTime格式的时间,转换成nvarchar
select Nmae,sum(count)qty,year from(
select Name,count,CONVERT(nvarchar(4),time,112)+'年' as year from Table
)base
group by Nmae,year 
order by year