码迷,mamicode.com
首页 > 数据库 > 详细

sql显示12个月数据

时间:2015-08-06 10:46:09      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

需求

最近在做一个财务报表展示系统,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语句需要自己来变通了。

 

sql显示12个月数据

标签:

原文地址:http://www.cnblogs.com/youmeng/p/4707231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!