zoukankan      html  css  js  c++  java
  • SQL自动补充其他月份为0

    create table ProductSale(ID int identity(1,1) primary key,ProductName nchar(10), Sales int,Dates datetime)
    insert into ProductSale
    select  'A',100,'2014-01-05'
    UNION ALL
    select  'A',200,'2014-02-05'
    UNION ALL
    select  'A',300,'2014-03-05'
    UNION ALL
    select  'B',100,'2014-01-05'
    UNION ALL
    select  'B',300,'2014-03-05'
    UNION ALL
    select  'B',400,'2014-04-05'
    select row_number() over (order by b.年) as ID , b.ProductName,ISNULL(c.Sales,0) Sales,b.Dates from (select rtrim(a.年)+'-'+rtrim(t.number)+'-'+rtrim('01') as Dates,a.ProductName,a.年,t.numberfrom (SELECT distinct YEAR(Dates) as 年,ProductName from ProductSale) a,master..spt_values t  where t.type='p' and t.number>=1 and t.number<=12) b left join ProductSale as c on b.年=YEAR(c.Dates) and b.月=MONTH(c.Dates) and b.ProductName=c.ProductName

    运行SQL语句之前:

    运行SQL语句之后:

    知识点

    1、获取日期的年份、月份(GetDate() = '2006-11-08 13:37:56.233')

    MONTH ( date )返回表示指定日期的“月”部分的整数。SELECT MONTH(GETDATE()) --返回11

    YEAR ( date )返回表示指定日期的“年”部分的整数。SELECT YEAR(GETDATE()) --返回2006

    2、master..spt_value表的含义

    相当于一个数字辅助表(master.dbo.spt_value),master是数据名,spt_value是表名,在sql中主要用到number字段。

    3、sql创建表,自动增长字段IDENTITY

    语法:IDENTITY(seed,increment) 

    参数:seed 加载到表中的第一个行所使用的值;

    increment 与前一个加载的行的标识值想家的增量值。

    create table ProductSale(ID int identity(1,1) primary key)

    4、连接字段

    如果字段都是CHAR型,直接用“+”连接;如果地段都是INT型,用CASE函数转换下,即case(字段名 as varchar(4) ),rtrim()函数,将字符串尾部的空格去掉。

    5、sql语句实现断号问题(ROW_NUMBER函数)

    row_number() over (order by b.年 ) as  ID

     

    参考资料:

     http://bbs.csdn.net/topics/390656141

     http://s.yanghao.org/program/viewdetail.php?i=347818

  • 相关阅读:
    [Machine Learning]Numpy
    [LeetCode]Valid Palindrome
    [LeetCode]Remove Linked List Elements
    [LeetCode]Reverse Linked List
    [LeetCode]Palindrome Number
    Spring绑定请求参数过程以及使用@InitBinder来注册自己的属性处理器
    servlet温故知新
    线程池简单实现
    JAVA NIO学习笔记
    XSS攻击简单介绍
  • 原文地址:https://www.cnblogs.com/haozhenjie819/p/3586854.html
Copyright © 2011-2022 走看看