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('') as Dates,a.ProductName,a.年,t.number 月 from (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

SQL自动补充其他月份为0的更多相关文章

  1. C++Builder 代码编辑器 回车自动补充括弧

    两大问题 括弧和折叠 一.括弧 XE7,回车,自动补充括弧} 好用,有时候不准确,代码量多,不知道什么原因就引起错误,总是多一个括弧,一回车就加一个括弧,都不敢回车写代码了,怎么关闭此选项? 找到了, ...

  2. sql 根据年份、月份查询数据

    CREATE TABLE [dbo].[T_UserAccess]( ,) NOT NULL, [UserId] [int] NULL, [UserType] [int] NULL, ) NULL, ...

  3. 处理半连接SQL自动改写内连接SQL一例

    昨天刚写了半连接改写系列,今天就遇到了此类型SQL: 优化前 耗时:28s 返回:0 SELECT D.DAILYAUDITNO, D.TRANSTOACC FROM PB_DOIC.MM_DAILY ...

  4. 通过SQL自动添加流水号

    通过SQL自动添加流水号 项目中往往有一些单据流水号或者流程流水号是希望通过新增一条记录后自动产生一个编号的,比如新增一条流程就自动根据当前日期自动添加该流程的流程流水号,下面介绍两种不同类型流水号通 ...

  5. 一个坑:java.sql.ResultSet.getInt==》the column value; if the value is SQL NULL, the value returned is 0

    Retrieves the value of the designated column in the current row of this ResultSet object as a String ...

  6. Linq to Sql自动生成实体类重名情况的处理

    使用Linq to sql自动生成实体类时,如果要生成多个库的实体类,往往会遇到类名重名的情况,也就是表名重名,这样编译会不通过,这种情况下要在自动生成的实体类文件中(.designer.cs后缀)将 ...

  7. java.lang.RuntimeException: java.sql.SQLException: Too many parameters: expected 0, was given 1 Quer

    如果出现类似这样的错误,检查一下是否sql语句和参数的位置对调了. java.lang.RuntimeException: java.sql.SQLException: Too many parame ...

  8. 终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!

    之前一直使用 SQL Server 作为主数据库而不是 MySQL ,原因之一是单机 SQL Server 性能比 MySQL 强很多,另一个原因是之前客户的系统管理员大多只有 SQL Server ...

  9. 中小团队快速构建SQL自动审核系统

    SQL审核与执行,作为DBA日常工作中相当重要的一环,一直以来我们都是通过人工的方式来处理,效率低且质量没办法保证.为了规范操作,提高效率,我们决定引入目前市面上非常流行的SQL自动审核工具Incep ...

随机推荐

  1. thttpd的定时器

    运用了static函数实现文件封装 提升变量访问效率的关键字register,该关键字暗示该变量可能被频繁访问,如果可能,请将值存放在寄存器中 内存集中管理,每个节点在取消后并没有立即释放内存,而是调 ...

  2. Weblogic安装

    1.下载wls_121200.jar, 2.输入cnd打开命令提示 3.f:进入F盘 4.Java -version 验证是否配置Java环境, 5.echo %path% 查看环境变量 6.set ...

  3. 剑指OFFER之链表中倒数第k个节点(九度OJ1517)

    题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为两个整数n和k(0<= ...

  4. 连接查询中on and和on where的区别

    一.区别 1. and条件是在生成临时表时使用的条件,它不管and中的条件是否为真,都会返回左(或者右)边表中的记录. 2.where条件是在临时表生成好后,再对临时表进行过滤的条件.这时已经没有le ...

  5. SQL Server中DML语句要申请的锁

    对于select语句: 1.当採用表扫描时,会直接锁定page,而不是锁定详细的某条记录,所以会有这些锁: A.数据库S锁 B.表的IS锁 C.页的S锁 2.当採用索引来查找数据时,会锁定详细的记录, ...

  6. sql语句having子句用法,很多时候你曾忘掉

    显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY reg ...

  7. sql操作事务SqlTransHelper类实现

    具体实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  8. cc代码学习笔记1

    #define #define INT32 int #define INT8 char #define CHAR char #define SSHORT signed short #define IN ...

  9. python 源码解读2

    http://www.jianshu.com/users/4d4a2f26740b/latest_articles http://blog.csdn.net/ssjhust123/article/ca ...

  10. Link List

    At first, i prepared to go through <the introduction to algorithm> ,however , i found some par ...