sql 怎么查询每一年1到12个月的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 怎么查询每一年1到12个月的数据相关的知识,希望对你有一定的参考价值。
要求把月份显示出来,但是表里面没有月份这个字段,只是一个datetime这个字段
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
2、然后在该界面中,点击左上角“新建查询”按钮。
3、之后在该界面中,输入查询每一年1到12个月的数据的SQL语句“Select Year(Time),Month(Time),SUM(Money) FROM test1 Group by Year(Time),Month(Time) ”。
4、然后在该界面中,点击上方左侧的“执行”按钮。
5、最后在该界面中,显示每一年1到12个月的数据。
参考技术A Select Year(datetime),Month(datetime),SUM(Data)FROM TABLE
Group by Year(datetime),Month(datetime)
仅仅显示月份应该是不够的,如果有数据已经跨年的话。不过如果不需要按年份汇总,可以直接把Year(datetime)这个删掉追问
我的这个年是做为条件的
追答Select Month(datetime),SUM(Data)
FROM TABLE
where Year(datetime) = @Year
Group by Month(datetime)
只要把变量@Year换成你要的年份就行了
要是这个月没有数据我用0代替,就是说没有哪个月没有数据就用0代替,反正要有12条数据
追答那我建议你要先写一个表值函数了。
create FUNCTION [dbo].[GenerateMonths]()
RETURNS @Months TABLE
(
Month int NOT NULL
)
AS
BEGIN
DECLARE @Month int
SET @Month = 1
WHILE @Month <= 12
BEGIN
INSERT INTO @Months (Month) VALUES (@Month);
SET @Month = @Month +1
END;
RETURN;
END;
select m.Month,DATa = Case when t.Month is null then 0 else t.Data end
From dbo.GenerateMonths() m LEFT OUTER JOIN (Select Month(datetime) as Month,SUM(Data) as Data FROM TABLE
where Year(datetime) = @Year
Group by Month(datetime))t
ON t.Month = m.Month
ORDER BY m.Month
select year(datetime) as [年份],month(datetime)as [月份 ], num as [数目] from table
如果查月份的汇总数据
select year(datetime) as [年份],month(datetime)as [月份 ], sum( num) as [数目] from table
group by year(datetime) ,month(datetime)本回答被提问者采纳 参考技术C 如过你的结果要是
一月 二月 三月 ....
数据 数据 数据 ....
select 字段 ‘一月’
from 表
where
year(datetime)=''
and mon(datetime)='01'
union all
select 字段 ‘二月’
from 表
where
year(datetime)=''
and mon(datetime)='02'
union all
...追问
是啊,但是没有月份这个字段,要从日期字段里面提取
追答用month(datetime)提取就可以了,用日期函数你里面存储的必须是日期格式的
你字段名别名叫一月,数据内容查出来的也是一月的内容不就可以了
GROUP BY to_char(time,'YYYY') ,to_char(time,'MM')
Python得到前面12个月的数据,Python得到现在时间 前一年的数据,
#Python 实现得到现在时间12个月前的每个月 # 假设现在的时间是2016年9月25日 #得到现在的时间 得到now等于2016年9月25日 now = datetime.datetime.now() #得到今年的的时间 (年份) 得到的today_year等于2016年 today_year = now.year #今年的时间减去1,得到去年的时间。last_year等于2015 last_year = int(now.year) -1 #得到今年的每个月的时间。today_year_months等于1 2 3 4 5 6 7 8 9, today_year_months = range(1,now.month+1) #得到去年的每个月的时间 last_year_months 等于10 11 12 last_year_months = range(now.month+1, 13) #定义列表去年的数据 data_list_lasts = [] #通过for循环,得到去年的时间夹月份的列表 #先遍历去年每个月的列表 for last_year_month in last_year_months: # 定义date_list 去年加上去年的每个月 date_list = ‘%s-%s‘ % (last_year, last_year_month) #通过函数append,得到去年的列表 data_list_lasts.append(date_list) data_list_todays = [] #通过for循环,得到今年的时间夹月份的列表 #先遍历今年每个月的列表 for today_year_month in today_year_months: # 定义date_list 去年加上今年的每个月 data_list = ‘%s-%s‘ % (today_year, today_year_month) #通过函数append,得到今年的列表 data_list_todays.append(data_list) #去年的时间数据加上今年的时间数据得到年月时间列表 data_year_month = data_list_lasts + data_list_todays data_year_month.reverse()
程序运行过程图片
以上是关于sql 怎么查询每一年1到12个月的数据的主要内容,如果未能解决你的问题,请参考以下文章