原始的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
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
原始的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年
Name = N'设备',
[COUNT] = SUM([COUNT]),
[TIME] = LTRIM(YEAR([Time])) + N'年'
FROM tablename
GROUP BY YEAR([Time])
ORDER BY [TIME]
@begin INT, --开始年
@end INT --结束年,注意@begin也可以等于@end
AS
SELECT
Name = N'设备',
[COUNT] = SUM([COUNT]),
[TIME] = LTRIM(YEAR([Time])) + N'年'
FROM tablename
WHERE YEAR([Time]) BETWEEN @begin AND @end
GROUP BY YEAR([Time])
ORDER BY [TIME]
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
select Name,sum(count)qty,year
from( select Name,count,CONVERT(nvarchar(4),time,112)+'年' as year from Table)base
group by Name,year
order by year