急~汇总SQL 在线等

jiangnan601 2019-10-16 10:55:08
表数据:
ID CreateDate Name
1 2019-10-16
2 2019-10-14
3 2019-10-10
4 2019-10-16
5 2019-10-01
6 2019-10-05
7 2019-10-08

要求SQL统计出十月份每一天的注册数量,结果如下

CreateDate Count
2019-10-01 1
2019-10-02 0
2019-10-03 0
2019-10-04 0
2019-10-05 1
2019-10-06 0
......(07~15中间省略了..)
2019-10-16 1
2019-10-30 0
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2019-10-16
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[CreateDate] DATETIME)
Insert #T
select 1,'2019-10-16 10:10:10' union all
select 2,'2019-10-14' union all
select 3,'2019-10-10' union all
select 4,'2019-10-16 11:10:10' union all
select 5,'2019-10-01' union all
select 6,'2019-10-05' union all
select 7,'2019-10-08'
Go
--测试数据结束
SELECT DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) [DataTime],
ISNULL(Count,0) Count
FROM master..spt_values
LEFT JOIN (SELECT CONVERT(DATE,CreateDate) AS CreateDate,COUNT(1) AS Count FROM #T GROUP BY CONVERT(DATE,CreateDate))t
ON DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) = [CreateDate]
WHERE type = 'P'
AND number
BETWEEN 0 AND DATEDIFF(DAY, '2019-10-01', DATEADD(MONTH, 1, '2019-10-01'))-1;

jiangnan601 2019-10-16
  • 打赏
  • 举报
回复
要加上时间
引用 楼主 jiangnan601 的回复:
表数据:
ID CreateDate Name
1 2019-10-16 08:00
2 2019-10-14 07:22
3 2019-10-10 07:21
4 2019-10-16 07:30
5 2019-10-01 07:31
6 2019-10-05 07:32
7 2019-10-08 07:33

要求SQL统计出十月份每一天的注册数量,结果如下

CreateDate Count
2019-10-01 1
2019-10-02 0
2019-10-03 0
2019-10-04 0
2019-10-05 1
2019-10-06 0
......(07~15中间省略了..)
2019-10-16 1
2019-10-30 0
二月十六 2019-10-16
  • 打赏
  • 举报
回复
引用 3 楼 jiangnan601 的回复:
[quote=引用 1 楼 二月十六 的回复:]
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[CreateDate] Date)
Insert #T
select 1,'2019-10-16' union all
select 2,'2019-10-14' union all
select 3,'2019-10-10' union all
select 4,'2019-10-16' union all
select 5,'2019-10-01' union all
select 6,'2019-10-05' union all
select 7,'2019-10-08'
Go
--测试数据结束
SELECT DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) [DataTime],
ISNULL(Count,0) Count
FROM master..spt_values
LEFT JOIN (SELECT CreateDate,COUNT(1) AS Count FROM #T GROUP BY CreateDate)t
ON DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) = [CreateDate]
WHERE type = 'P'
AND number
BETWEEN 0 AND DATEDIFF(DAY, '2019-10-01', DATEADD(MONTH, 1, '2019-10-01'))-1;







你这个时间加上时分秒就不行了[/quote]你的问题里是没有分秒的,如果你给的数据不对,时间是有分秒的,把时间转换一下,只取日期即可。
jiangnan601 2019-10-16
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[CreateDate] Date)
Insert #T
select 1,'2019-10-16' union all
select 2,'2019-10-14' union all
select 3,'2019-10-10' union all
select 4,'2019-10-16' union all
select 5,'2019-10-01' union all
select 6,'2019-10-05' union all
select 7,'2019-10-08'
Go
--测试数据结束
SELECT DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) [DataTime],
ISNULL(Count,0) Count
FROM master..spt_values
LEFT JOIN (SELECT CreateDate,COUNT(1) AS Count FROM #T GROUP BY CreateDate)t
ON DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) = [CreateDate]
WHERE type = 'P'
AND number
BETWEEN 0 AND DATEDIFF(DAY, '2019-10-01', DATEADD(MONTH, 1, '2019-10-01'))-1;







你这个时间加上时分秒就不行了
stelf 2019-10-16
  • 打赏
  • 举报
回复
顶楼上,先构造出一个日历类的序列数据,然后再和你的业务数据做关联
二月十六 2019-10-16
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[CreateDate] Date)
Insert #T
select 1,'2019-10-16' union all
select 2,'2019-10-14' union all
select 3,'2019-10-10' union all
select 4,'2019-10-16' union all
select 5,'2019-10-01' union all
select 6,'2019-10-05' union all
select 7,'2019-10-08'
Go
--测试数据结束
SELECT DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) [DataTime],
ISNULL(Count,0) Count
FROM master..spt_values
LEFT JOIN (SELECT CreateDate,COUNT(1) AS Count FROM #T GROUP BY CreateDate)t
ON DATEADD(DAY, number, CONVERT(DATETIME, '2019-10-01')) = [CreateDate]
WHERE type = 'P'
AND number
BETWEEN 0 AND DATEDIFF(DAY, '2019-10-01', DATEADD(MONTH, 1, '2019-10-01'))-1;



EXCEL里使用SQL的方法(欢乐小爪原创) 用EXCEL的SQL用法,抄来欢乐小爪几篇文章,支持原创,留下小爪印:http://hi.baidu.com/huanhuanxiaozhua/blog EXCEL(VBA)~SQL 经典写法范本汇集(一) 2007-12-10 21:20 编前话:为了更系统的学习sql语句,小爪首次系统的汇集sql 需引用 microsoft activeX Data Objects 2.8 library 1.sql = "select 构件名称,构件代号,横长度,横数量,竖长度,竖数量,比重,相应工艺 from [参数$B2:K1916]where (大样代码='" & DYDH & "') and (内外框='WKXC')" 2.sql = "select 构件名称,构件代号,横长度,横数量,竖长度,竖数量,比重,相应工艺 from [参数$B2:K" & CSMaxrow & "] where (大样代码='" & DYDH & "') and (内外框='WKXC')" **************************************************************** A、根据本工作簿的1个表查询求和写法范本 Sub 查询方法一() Set CONN = CreateObject("ADODB.Connection") CONN.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName sql = "select 区域,存货类, sum(代销仓入库数量),sum(代销仓出库数量),sum(日报数量)from [sheet4$a:i] where 区域='" & [b3] & "' and month(日期)='" & Month(Range("F3")) & "' group by 区域,存货类" Sheets("sheet2").[A5].CopyFromRecordset CONN.Execute(sql) CONN.Close: Set CONN = Nothing End Sub ----------------- Sub 查询方法二() Set CONN = CreateObject("ADODB.Connection") CONN.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName sql = "select 区域,存货类, sum(代销仓入库数量),sum(代销仓出库数量),sum(日报数量)from [sheet4$a:i] where 区域='" & [b3] & "' and month(日期)='" & Month(Range("F3")) & "' group by 区域,存货类" Sheets("sheet2").[A5].CopyFromRecordset CONN.Execute(sql) CONN.Close: Set CONN = Nothing End Sub ************************************************************************************************** B、根据本工作簿2个表的不同类别查询求和写法范本 Sub 根据入库表和回款表的区域名和月份分别求存货类发货数量和本月回款数量查询() Set conn = CreateObject("adodb.connection") conn.Open "provider=microsoft.jet.oledb.4.0;" & _ "extended properties=excel 8.0;data source=" & ThisWorkbook.FullName Sheet3.Activate Sql = " select a.存货类,a.fh ,b.hk from (select 存货类,sum(本月发货数量) " _ & " as fh from [入库$] where 存货类 is not null and 区域='" & [b2] _ & "' and month(日期)=" & [d2] & " group by 存货类) as a" _ & " left join (select 存货类,sum(数量) as hk from [回款$] where 存货类" _ & " is not null and 区域='" & [b2] & "' and month(开票日期)=" & [d2] & "" _ & " group by 存货类) as b on a.存货类=b.存货类" Range("a5").CopyFromRecordset conn.Execute(Sql) End Sub ******************************************************************* C、根据本文件夹下其他工作簿1个表区域的区域求和 Sub 在工作表1汇总本文件夹下001工作薄的表1分数列查询汇总() Set conn = CreateObject("ADODB.Connection") conn.Open "dsn=excel files;dbq=" & ThisWorkbook.Path & "\001.xls" sql = "select sum(分数) from [sheet1$]" Sheets(1).[a2].CopyFromRecordset conn.Execute(sql) conn.Close: Set conn = Nothing End Sub --------------------- Sub 在工作表1汇总本文件夹下001工作薄的表1A1:A10查询汇总() Set conn = CreateObject("ADODB.Connection") conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no;';data source=" & ThisWorkbook.Path & "\001.xls" sql = "select sum(f1) from [sheet1$a1:a10]" Sheets(1).[A5].CopyFromRecordset conn.Execute(sql) conn.Close: Set conn = Nothing End Sub ----------------------- Sub 在工作表1汇总本文件夹下001工作薄的表1分数列A1:A7查询并msgbox表达汇总() Set conn = CreateObject("ADODB.Connection") Set rr = CreateObject("ADODB.recordset") conn.Open "dsn=excel files;dbq=" & ThisWorkbook.Path & "\001.xls" sql = "select sum(分数) from [sheet1$a1:a7]" Sheets(1).[A8].CopyFromRecordset conn.Execute(sql) rr.Open sql, conn, 3, 1, 1 MsgBox rr.fields(0) conn.Close: Set conn = Nothing End Sub ****************************************************************************************** D、根据本文件夹下其他工作簿多个表区域的单列区域查询求和 sub 本文件夹下其他工作簿的每个工作簿的第4列 30行查询求和 Dim cn As Object, f$, arr&(1 To 30), i% Application.ScreenUpdating = False Set cn = CreateObject("adodb.connection") f = Dir(ThisWorkbook.Path & "\*.xls") Do While f <> "" If f <> ThisWorkbook.Name Then cn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no;';data source=" & ThisWorkbook.Path & "\" & f Range("d5").CopyFromRecordset cn.Execute("select f4 from [基表1$a5:d65536]") cn.Close For i = 1 To 30 arr(i) = arr(i) + Range("d" & i + 4) Next i End If f = Dir Loop Range("d5").Resize(UBound(arr), 1) = WorksheetFunction.Transpose(arr) Application.ScreenUpdating = True End Sub ************************************************************************************************** E、根据本文件夹下其他工作簿多个表区域的多列区域查询求和 sub 本文件夹下其他工作簿的每个工作簿的第B\C\D列 25行查询求和 Dim cn As Object, f$, arr&(1 To 25, 1 To 3), i% Application.ScreenUpdating = False Set cn = CreateObject("adodb.connection") f = Dir(ThisWorkbook.Path & "\*.xls") Do While f <> "" If f <> ThisWorkbook.Name Then cn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no;';data source=" & ThisWorkbook.Path & "\" & f Range("b6").CopyFromRecordset cn.Execute("select f2,f3,f4 from [基表3$a6:e65536]") cn.Close For i = 1 To 25 For j = 1 To 3 arr(i, j) = arr(i, j) + Cells(i + 5, j + 1) Next j Next i End If f = Dir Loop Range("b6").Resize(UBound(arr), 3) = arr Application.ScreenUpdating = True End Sub *********************************************************************************** F、其他相关知识整理 ' 用excel SQL方法 'conn是建立的连接对象,用open打开 ' 通过 CreateObject("ADODB.Connection") 这一句建立了一个数据库连接对象conn ' 在工程中就不再需要引用“Microsot ActiveX Data Objects 2.0 Library“ 对象 '设置对象 conn 为一个新的 ADO 链接实例,也可以用 set conn = New ADODB.Connection。 -------------- ' conn.Close表示关闭conn连接 ' Set conn = Nothing 是把连接对象conn置空,不然你退出了文件,但数据库还没有关闭 conn.Open "dsn=excel files;dbq=" & ThisWorkbook.Path & "\001.xls"能把这段含义具体解释一下吗? '这里的dbq的作用? '------------------ 'dsn是缩写,data source name数据库名 是 excel file ' 'dbq 也是缩写,data base query 意思是数据库查询,后接源库文件名 001.xls '--------------------- '代码中长单词怎么记住的? '比如copyfromrecordset可以拆开记忆,copy、from、recordset 这三个单词意思知道吧,就是“复制、从、记录集” '----------------- 'Sql = "select sum(分数) from [sheet1$]"这里加"分数"两字什么作用? ' 'SQL一般结构是select 字段 from 表,意思是从指定的表中查询字段,字段的理解可以是:表 中的列名 ' '分数 是001.xls文件的sheet1第一行A列的字段名,SQL一般以字段来识别每列数据 '------------------- '为什么要用复制的对象引用过来计算呢? ' '因为Sql语句只是对源数据库的字段找到了符合条件的的数据,但不会自动复制到汇总表来,所以需要复制copy ' '注意 这里的 [sheet1$]" ,001文件的数据存放地上sheet1表,应当用方括号并加上$ ' '如果源数据文件001不是excel,而是Access,则引用表时,不需要加方括号,也不要$ '----------------- 还有,这里Execute表示什么作用? '' Execute是执行SQL查询语句的意思 ----------------------------- 如果不要字段也可以,那么在打开语句中加上:hdr=no '这样没有分数字段也可实现 'SQL语句我换了形式,而且加上了hdr=no,即无需字段,而且我在SQL中用了sum(f1),f1表示第一列数据 '[sheet1$a1:a10] "是只求a1:a10区域的和" ********************************************** 编后话: 前面也多次听说了sql,总没有时间,也没有好好认识它 第一次认真系统学习sql语句,汇集了一些代码。 有不同理解的人,欢迎给予小爪评论,小爪只爱excel
压缩文件 收集的常见的专业问题解决办法.rar 2006-11-01 21:10 94792 91186 常见的专业问题解决办法\CSS语法一览表.pdf 2009-03-05 14:06 155509 34856 常见的专业问题解决办法\html中rel与rev的关系(转载)_我的幅度.mht 2009-03-05 19:33 232863 45314 常见的专业问题解决办法\Html标签大全_破巢.mht 2006-11-01 21:11 107135 101736 常见的专业问题解决办法\HTML语法一览表.pdf 2000-12-29 09:23 53412 5232 常见的专业问题解决办法\HTML语言参考\HTM1.HTM 2000-12-29 09:23 22961 3263 常见的专业问题解决办法\HTML语言参考\HTM2.HTM 2009-01-16 17:08 1494866 1050112 常见的专业问题解决办法\JavaScript特效代码集.rar 2006-11-01 21:11 95888 88773 常见的专业问题解决办法\JavaScript语法一览表.pdf 2009-02-24 08:39 1423088 975149 常见的专业问题解决办法\Java中多态变量的讨论和总结.mht 2009-02-24 08:52 156256 34316 常见的专业问题解决办法\Java中的强制类型转换_Believe ┭┮ YourSelf.mht 2009-02-24 08:31 61003 61003 常见的专业问题解决办法\Java容器类List、ArrayList、Vector及map、HashTable、HashMap的使用与区别.rar 2009-02-24 08:29 40960 13763 常见的专业问题解决办法\java容器类介绍.doc 2009-02-24 08:42 165165 37065 常见的专业问题解决办法\Java核心技术学习笔记--异常和调试_Believe ┭┮ YourSelf.mht 2009-03-20 16:36 142683 39110 常见的专业问题解决办法\JR - 专题论坛问题 - eclipse??如何设置代理啊.mht 2009-03-10 17:37 462569 194709 常见的专业问题解决办法\JSP实例:动态生成验证码.mht 2009-03-10 17:52 185677 39758 常见的专业问题解决办法\jsp数字验证码代码详解 - 我爱跑IT---技术专区.mht 2009-03-10 17:22 192548 40484 常见的专业问题解决办法\JSP验证码代码的实现_娟行天下.mht 2009-02-24 08:40 156913 33699 常见的专业问题解决办法\JS对select控件的操作汇总整理.mht 2009-02-24 08:40 173330 36602 常见的专业问题解决办法\Js获取当前日期时间及其它操作_Believe ┭┮ YourSelf.mht 2009-03-09 09:42 159485 36202 常见的专业问题解决办法\MYSQL命令备忘_心心相惜.mht 2009-02-24 09:01 165033 37357 常见的专业问题解决办法\MySql的配置_Believe ┭┮ YourSelf.mht 2009-02-24 08:43 452690 186879 常见的专业问题解决办法\Rational Rose 2003 下载、破解及安装方法(图文)_Believe ┭┮ YourSelf.mht 2009-02-24 08:36 171617 47585 常见的专业问题解决办法\Spring框架与AOP思想的研究与应用.mht 2009-02-24 08:37 190012 61182 常见的专业问题解决办法\Spring框架快速入门之简介.mht 2009-01-16 08:16 281434 266693 常见的专业问题解决办法\sql导入excel.rar 2009-03-10 11:12 181976 38906 常见的专业问题解决办法\struts的验证码实现_17号的空间.mht 2009-03-10 11:13 377530 94291 常见的专业问题解决办法\struts验证码 - Struts - Java - JavaEye论坛.mht 2007-10-20 11:27 427008 296205 常见的专业问题解决办法\swing程序设计.doc 2007-12-25 20:21 1504314 1493642 常见的专业问题解决办法\Tomcat.chm 2009-02-21 15:33 979 696 常见的专业问题解决办法\U盘新玩法.txt 2009-03-16 17:34 93262 24870 常见的专业问题解决办法\[]hibernate中的Session什么时候关闭?_百度知道.mht 2009-03-18 09:07 2303315 1322088 常见的专业问题解决办法\[教程]红旗Linux5_0桌面正式版光盘安装=图解教程=Unix-Linux - 系统之家论坛.mht 2009-02-24 08:43 151144 33570 常见的专业问题解决办法\“在静态方法中不能调用非静态的方法和引用非静态的成员变量”如何理解?_Believe ┭┮ YourSelf.mht 2009-03-03 20:16 487640 194474 常见的专业问题解决办法\代理知识大全~~~【申精】精品软件 - 玄殿社区 —打造游戏娱乐温馨家园.mht 2009-03-17 12:00 166432 35921 常见的专业问题解决办法\最新VM虚拟机6_0版_可可_KEY.mht 2009-03-19 08:29 99829 27128 常见的专业问题解决办法\求网页设计,屏蔽右键的代码?_百度知道.mht 2009-03-09 09:38 132723 34712 常见的专业问题解决办法\百度_网盾工程吧_MySQL导出导入命令.mht 2003-06-20 20:49 153581 146314 常见的专业问题解决办法\精通swing程序设计.chm 2009-02-26 16:33 177152 37861 常见的专业问题解决办法\网页常用的jsp 脚本.doc 2009-03-20 16:37 254350 86752 常见的专业问题解决办法\解决Struts中ApplicationResources_properties文件不支持中文问题_微科工作室 QQ:28790953____.mht 2009-02-25 08:45 文件夹 文件夹 常见的专业问题解决办法\HTML语言参考 2009-03-21 14:55 文件夹 文件夹 常见的专业问题解决办法 # # 总计 大小 压缩后大小 文件数 # 13349124 7429458 42

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧