sql显示12个月数据

需求

最近在做一个财务报表展示系统,Budget需要当月上传,还未上传月份的数据也需要显示出来。

数据库设计

cBudget表结构如下

CREATE TABLE [dbo].[cBudget](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Month] [int] NOT NULL,
    [Sales] [decimal](18, 0) NULL
) ON [PRIMARY]

GO

插入测试数据,数据截至到今年的7月份

INSERT INTO [cBudget] VALUES(1,111)
INSERT INTO [cBudget] VALUES(2,222)
INSERT INTO [cBudget] VALUES(3,333)
INSERT INTO [cBudget] VALUES(4,444)
INSERT INTO [cBudget] VALUES(5,555)
INSERT INTO [cBudget] VALUES(6,666)
INSERT INTO [cBudget] VALUES(7,777)

问题及解决方案

常规的写法直接select,F5执行,Oh My God~~~,显示的7月份的数据,绑定报表插件也只显示到7月份,和需求完全不符啊。

不要着急,下面就是master..spt_values发挥的时候了(当然,你也可以自己建一个存储1-12个数字的临时表),1到12月份的数据出来了

select b.number as Month,ISNULL(a.Sales,0) as Sales
from cbudget as a right join
    (
    select number from master.dbo.spt_values AS T1
    WHERE T1.type = ‘P‘ AND T1.number between 1 and 12
     ) b
on b.number=a.month

大致的原理就是这样,更为复杂的sql语句需要自己来变通了。

时间: 2024-10-05 03:36:51

sql显示12个月数据的相关文章

MySQL 统计过去12个月的数据(包括本月)

1.问题 需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到2015年4月的数据情况.而这12个月中,如果这个月没有数据的,则统计为0. 原始数据表如下图,数据是按分钟存储的.也就是说要统计每个月一共有多少条body_infared大于0的数据. 2.处理过程 2.1 获取12个月到现在的数据 select * from device_data t where DATE_FORMAT(t.time,'%Y-%m')> DATE_FORMAT(date_sub(

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

1.时间字段是datetime类型 2.需要用到中间表,表结构和数据链接下载 https://pan.baidu.com/s/1sAQ78e3Ao-KwvYJlaipbKQ 3.前两个 adddate 月日需要在数据库写死 从每年的-01-01开始,-最后一个日期同理xxxx-12-31 4.下面是sql select concat(month(years.date),'月') as year, years.date, date_format(years.date, '%Y-%m') AS ye

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_m

通过LINQ TO SQL类显示数据库表的数据

1.数据库操作:首先在数据库创建一张简单的表SPJ 2.新建一个ASP.NET空网站 3.新建一个Web窗体,命名为ShowData.aspx 在源码界面添加两个控件:Button控件和Gridview控件 <div> <asp:Button ID="BtnShow" runat="server" Text="单击显示Gridview表" OnClick="BtnShow_Click" /> <a

SQL数据库同步工具(开辟数据同步工具)2.0 中文免费版

SQL数据库同步工具(开辟数据同步工具)本系统分为客户端和服务器两个部分,其中客户端承担了系统绝大数事务,服务器只是简单的执行客户端传送的命令,属于典型的C/S胖客户端瘦服务器模式.这样设计的目的是为了减轻服务器的压力,让系统更加流畅. 本系统分为客户端和服务器两个部分,其中客户端承担了系统绝大数事务,服务器只是简单的执行客户端传送的命令,属于典型的C/S胖客户端瘦服务器模式.这样设计的目的是为了减轻服务器的压力,让系统更加流畅. 客户端负责采集分布数据库中的数据,然后汇总到服务器.客户端需要配

SQL Server 基础 03 查询数据基础

查询数据 简单的查询 1 create table stu_info 2 ( 3 sno int not null 4 ,sname varchar(20) not null 5 ,sex varchar(2) not null 6 ,birth varchar(20) not null 7 ,email varchar(20) not null 8 ,telephone int not null 9 ,depart varchar(20) not null 10 ) 11 12 13 sele

恢复SQL Server被误删除的数据(再扩展)

恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的恢复 这个是一个缺陷,本人决定对这个存储过程扩展一下,支持对log backup文件里的delete语句进行恢复 实验步骤 1.首先先准备好测试表和测试语句 USE [sss] GO --建表 CREATE TABLE testdelete ( id INT IDENTITY(1, 1) NOT NULL P

SQL实现类似于自动刷新数据的功能

原文:SQL实现类似于自动刷新数据的功能 有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像应用程序自动刷新的功能,可能是我还不知道有这样的功能,于是就写了一个类似自动刷新数据的脚本,需要手动中止程序的运行,当然也可能写个条件,自动结束语句的执行. 代码: 1 USE AdventureWorks2008R2 2 GO 3 4 WHILE 1=1

如何在SQL中处理层次型数据

最近在做公司的认证系统,看了开源项目如apache shiro跟spring security,还不知道是自己构建还是用上述代码.最近的考虑点是如何处理层次型数据,因为打算给user构造一个有层次的group,而且是n:m的,这篇文章虽然不能帮助我解决这个问题,但是作为一个基础文章,算是很扎实的了,所以自己翻译了一下. 原文链接 介绍 多数使用者都会与sql的层次型数据打一次或多次交道,并明确地领悟到层次型数据的处理并不是关系型数据库的目标.关系型数据库的表格不是层次型(例如xml),而是一个简