每天努力一点之SQL
今天工作当中遇到一个问题:统计信息并导出EXcel 报表。
刚开始只做了统计信息:
如下图

请看最后一列的数据。
我当时想都从数据库里取出来,但是由于我能力有限没有做出来。先贴下后来写的SQL 语句。
alter PROCEDURE spread_GetAuthoInfoByStatistics(
@Count int
)
AS
SET NOCOUNT ON;
BEGIN
DECLARE @hitsHistory INT
if(@Count=0)
begin
SELECT @hitsHistory=COUNT(1) FROM dbo.AuthinfoAct ;WITH TempTable
AS (
SELECT YEAR(AddTime) [Year],COUNT(1) AS Total--, @hitsHistory,@hitsHistory+COUNT(1)
FROM dbo.AuthinfoAct
GROUP BY YEAR(AddTime)
) SELECT A.Year, A.Total, SUM(B.Total) AcumulateTotal
FROM TempTable A, TempTable B
WHERE A.Year>=B.Year
GROUP BY A.Year,A.Total order by A.Year
end
else
begin
SELECT @hitsHistory=COUNT(1) FROM dbo.AuthinfoAct WHERE YEAR(AddTime) != YEAR(GETDATE());
WITH TempTable
AS (
SELECT MONTH(AddTime) [Month],COUNT(1) AS Total--, @hitsHistory,@hitsHistory+COUNT(1)
FROM dbo.AuthinfoAct
WHERE YEAR(AddTime) = YEAR(GETDATE())
GROUP BY MONTH(AddTime)
) SELECT A.[Month], A.Total, SUM(B.Total) +@hitsHistory AcumulateTotal
FROM TempTable A, TempTable B
WHERE A.[Month]>=B.[Month]
GROUP BY A.[Month],A.Total
end
END
GO
看着也挺简单的是吧,但是我当初想的比较麻烦还想到了递归。
下面就说说我第一次怎么做的吧。、
第一次从数据库统计好第一列,第二列的数据。
最后一列的数据我利用代码的方便性写的。
如下:
var Num = 0;
for (int i = 0; i < models.Count; i++)
{
if (i == 0)
{
<tr>
<td class="edit">@models[i].Item2</td>
<td>@models[i].Item1</td>
<td>@models[i].Item3</td>
<td>@(models[i].Item1+visitHis.Value)
@{ Num = models[i].Item1 + visitHis.Value;}
</td>
</tr>
}
else
{
<tr>
<td class="edit">@models[i].Item2</td>
<td>@models[i].Item1</td>
<td>@(models[i].Item1 + Num)
@{ Num = models[i].Item1 + Num;}
</td>
</tr>
}
}
还是先处理数据好啊。
每天努力一点之SQL的更多相关文章
- 每天努力一点之SQL(二) count sum case when then group by
1. select sum(CASE WHEN A.[STATUS]=0 THEN 1 ELSE 0 end) as a1, sum(CASE A.[STATUS] WHEN 1 THEN 1 EL ...
- hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点
周一要了个任务,做评价完成,分享完成的页面,做到周四发现可能做不出来,找dzy,逻辑比较混乱,想要放弃了,感觉自己非常没用.昨天跟豆聊了一下,否定自己是一点意义也没有的,觉得自己很差劲,无助的感觉跟初 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 复杂一点的SQL语句:Oracle DDL和DML
DDL:对表或者表的属性进行了改变 create:创建表创建用户创建视图 创建表 create table student(id int,score int) ; student后面与括号之间可以有空 ...
- 在SQL中使用PL/SQL函数存在的问题
-----------------------------Cryking原创------------------------------ -----------------------转载请注明出处, ...
- SQL SERVER数据库新认识的一些基础知识
最近要接触sql server的存储过程啦,在处理更加复杂的逻辑过程前,就来看一下这些sql的基础语法,感觉看啦一些复杂一点的sql语句,突然发现我是有多么的薄弱啊,所以在一些基础的语法上面我再重新整 ...
- SQL Server 批量主分区备份(Multiple Jobs)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 案例分析(Case) 方案一(Solution One) 方案二(Solution Two) ...
- sql 索引 的建立
(From:http://54laobaixing.blog.163.com/blog/static/57843681200952411133121/) 假设你想找书中的某一个句子.你可以一页一页地逐 ...
- SQL Developer报错:Unable to find a Java Virtual Machine解决办法
安装了64位的Oracle数据库以及32位的Oracle客户端,在开始菜单中第一次打开客户端的SQL Developer时提示输入java.exe的路径,我选择了Oracle数据库自带的jdk路径,确 ...
随机推荐
- Linux ssh密钥自动登录(转)
在开发中,经常需要从一台主机ssh登陆到另一台主机去,每次都需要输一次login/Password,很繁琐.使用密钥登陆就可以不用输入用户名和密码了 实现从主机A免密码登陆到主机B,需要以下几个步骤: ...
- nginx 源码安装
安装环境: 操作系统:Ubuntu 12.04 Nginx: V1.4.2 PCRE: V8.33 zlib: V1.2.8 下载上述源包到当前用户主目录(本机:/hom ...
- loj1245(数学)
传送门:Harmonic Number (II) 题意:求sum=n/1+n/2+n/3+...+n/n.(n<2^31) 分析:在一定的区间内n/i的值是一定的,因此要跳过这段区间来加速求解. ...
- 管理处理器的亲和性(affinity)
管理处理器的亲和性(affinity) 管理处理器的亲和性(affinity)
- poj 2201 构造
这个题目的构造方法应该还算是很好想的,先给a按照从小到大排序,然后按顺序插入数据,构造一棵二叉查找树,而且50000的数据,nlogn的做法,应该还是很好的.不过这个题目的编码比想象中要麻烦一点,并且 ...
- Devstack: A copy of worked local.conf I'm sharing with you.
service_plugins = neutron.services.firewall.fwaas_plugin.FirewallPlugin [service_providers] service_ ...
- 9个杀手级 JVM 编程语言
9个杀手级 JVM 编程语言 Java虚拟机已经不再是仅仅局限在 Java 了,很多语言提供了脚本转换,可以让其他的程序在java虚拟机上运行,这样能够让更多的开发者能够依靠JVM在Java平台上大有 ...
- IIS设置允许下载.exe文件解决方法
最近很多客户使用IIS服务器,然后提示返现宝下载无法找到等无法下载的问题. 返现宝是.exe安装文件,部分服务器或主机可能无法下载. 第一.如果是自己服务器或VPS请按如下设置: 1.设置MIME,让 ...
- Eureka 的 Application Client client的执行演示样例
上篇以一个 demo 演示样例介绍了 Eureka 的 Application Service 客户端角色.今天我们继续了解 Eureka 的 Application Client 客 ...
- SO_REUSEADDR 套接字选项应用
在网络上的SO_REUSEADDR套接字选项是用来解决地址问题重用了大量的信息.但仅仅停留在文字的表达.并没有实例,非常easy误导谁刚开始学习,和不解,此处不再赘述. 的使用该选项,以及须要注意的问 ...