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

参考技术B 如果表有两个字段 datetime,num

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)提取就可以了,用日期函数你里面存储的必须是日期格式的
你字段名别名叫一月,数据内容查出来的也是一月的内容不就可以了

参考技术D select a, b , c ,to_char(time,'YYYY') ,to_char(time,'MM') ,sum () FROM T1
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个月的数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql 根据某一年 查询12个月的数据

sql 怎么查询最新一个月的数据

取上个月和上一年的数据,sql怎么写

php+mysql中怎么查询最近12个月每个月的数据

如何用sql的日期函数,分别查出1月~12月每个月的销售金额?

SQL 查询每个月统计的数据。