zoukankan      html  css  js  c++  java
  • 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语句需要自己来变通了。

  • 相关阅读:
    mysq foreign外键记录
    查询时隐藏部分身份证号
    SpringBoot接收前端参数
    RabbbitMQ安装
    @configurationProperties注解时 idea弹出 Spring Boot Annotion processor not found in classpath
    rpm,yum和apt使用详解
    python人脸识别
    Fuchsia文章汇总
    Androi O Automotive 介绍
    Linux 版本控制工具之rabbitvcs
  • 原文地址:https://www.cnblogs.com/youmeng/p/4707231.html
Copyright © 2011-2022 走看看