BEGIN TRY

    DECLARE @BeginTime DATETIME='2017-02-01'
DECLARE @EndTime DATETIME='2017-03-3 23:59:59'
DECLARE @ShowType INT=0 --展示的类型 0=日 1=十日 2=月
DECLARE @CusCount INT --成交客户数
DECLARE @TotlDate INT=10 --统计分组天数 SELECT @CusCount=COUNT(1) FROM
(
SELECT o.Memberid FROM dbo.[Order] o
WHERE o.PayedDateTime BETWEEN @BeginTime AND @EndTime
GROUP BY o.Memberid
) CusCount IF(@ShowType=0)
BEGIN
----日
SELECT CONVERT(VARCHAR(10),A.PayedDateTime,23) AS ShowDay,COUNT(1) AS 成交笔数,SUM(A.Payed) AS 成交金额,@CusCount AS 成交客户数 FROM
(
SELECT o.Payed,o.PayedDateTime FROM dbo.[Order] o
WHERE o.PayedDateTime BETWEEN @BeginTime AND @EndTime
) AS A
GROUP BY CONVERT(VARCHAR(10),A.PayedDateTime,23) ; END
ELSE IF(@ShowType=1)
BEGIN ----十日
SELECT A.FistDate AS ShowDay,COUNT(1) AS 成交笔数,SUM(A.Payed) AS 成交金额,@CusCount AS 成交客户数 FROM
(
SELECT o.Payed,t.evdate,CONVERT(int, evdate-@BeginTime)/@TotlDate Gid,@BeginTime+CONVERT(int, evdate-@BeginTime)/@TotlDate*@TotlDate FistDate from
(select @BeginTime+number evdate from master..spt_values where type='P' and @BeginTime+number<=@EndTime) t
LEFT JOIN dbo.[Order] o ON CONVERT(varchar(100), o.PayedDateTime, 112)=CONVERT(varchar(100), t.evdate, 112)
WHERE o.Tradestatus='TRADE_FINISHED' AND o.Paystatus=1 AND o.PayedDateTime IS NOT NULL AND o.IsTeamBuyRede !='rede' AND o.StoreId=0 AND o.PayedDateTime BETWEEN @BeginTime AND @EndTime
) AS A
GROUP BY A.Gid,A.FistDate; END
ELSE IF(@ShowType=1)
BEGIN
----月
SELECT SUBSTRING(CONVERT(VARCHAR(10),A.PayedDateTime,23),1,7) AS ShowDay,COUNT(1) AS 成交笔数,SUM(A.Payed) AS 成交金额,@CusCount AS 成交客户数 FROM
(
SELECT o.Payed,o.PayedDateTime FROM dbo.[Order] o
WHERE o.PayedDateTime BETWEEN @BeginTime AND @EndTime
) AS A
GROUP BY SUBSTRING(CONVERT(VARCHAR(10),A.PayedDateTime,23),1,7)
END
ELSE
BEGIN
SELECT ''
END
END TRY
BEGIN CATCH END CATCH

最主要是这里

(select @BeginTime+number evdate from master..spt_values where type='P' and @BeginTime+number<=@EndTime)

Sql 按照指定天数时间段查询的更多相关文章

  1. SQL Server,Access数据库查询易混点和C#中parameter指定参数长度的优缺点

    在学校的时候就经常做一些网站,所以这次在公司实习,组长第一次给了一个企业的网站还是很快的完成了.中间并没有遇到什么大的问题,但是还是遇到了两个新手非常容易混淆的小问题,所以拿出来跟大家分享一下. 主要 ...

  2. (后端)sql server 按时间段查询

    百度的资料,保存下来: 在写按时间段查询的sql语句的时候 一般我们会这么写查询条件: where date>='2010-01-01' and date<='2010-10-1'. 但是 ...

  3. 你真的会玩SQL吗?之逻辑查询处理阶段

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  4. SQL Server-聚焦强制索引查询条件和Columnstore Index(九)

    前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...

  5. SQL的多表连接查询

    SQL的多表连接查询 多表连接查询具有两种规范,SQL92和SQL99规范. SQL92规范支持下列多表连接查询: (1)等值连接: (2)非等值连接: (3)外连接: (4)广义笛卡尔积: SQL9 ...

  6. 第1/24周 SQL Server 如何执行一个查询

    大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要, ...

  7. 在SQL Server 2016里使用查询存储进行性能调优

    作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在 ...

  8. sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密

    /****** Object: StoredProcedure [dbo].[getSplitValue] Script Date: 03/13/2014 13:58:12 ******/ SET A ...

  9. MySql按指定天数进行分组数据统计分析 1

    这几天,在做数据统计,在对数据库数据进行统计过程中,有个需求就是要按照指定天数进行分组, 之前一直没有找到好的方法,就先取出数据,在程序中进行分组. 后发现,可以在SQL语句中实现按天数分组. 例: ...

随机推荐

  1. IntelliJ IDEA(2018)安装和破解

    IDEA 全称 IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具( ...

  2. 【LInux】统计某文件夹下目录的个数

    统计当前文件夹下文件的个数,包括子文件夹里的ls -lR|grep "^-"|wc -l 统计文件夹下目录的个数,包括子文件夹里的ls -lR|grep "^d" ...

  3. php.ini 开发和线上配置的差异

    比对了一下php自带的php.ini-development和php.ini-production,备忘. display_errors = Ondisplay_startup_errors = On ...

  4. 队列Queue、栈LifoQueue、优先级队列PriorityQueue

    队列:队列是先进先出. import queue q = queue.Queue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print( ...

  5. rails 杂记 - model 中的exists?

    1. exists? 用法 有一段代码 参考 def generate_token(column) begin self[column] = SecureRandom.urlsafe_base64 e ...

  6. 无网络 使用pip安装mxnet

    # 在有网络的同系统机器上运行以下命令:pip download mxnet# 目前mxnet版本为1.3.0,执行后当前目录得到以下文件: # . # ├── certifi--py2.py3-no ...

  7. 每个JavaScript程序员都需要知道的5个数组方法

    Array.forEach() .forEach() 方法能够方便的让你 遍历数组里的每个元素,你可以在回调函数里对每个元素进行操作..forEach()方法没有返回值,你不需要在回调函数里写retu ...

  8. (转)JVM中的OopMap(zz)

    原文地址: http://www.cnblogs.com/strinkbug/p/6376525.html 在读周智明的深入理解JVM虚拟机时,关于枚举根节点/安全点这部分感觉书上写的不是太明白,找了 ...

  9. GitLab使用公钥SSH key登录

    SSH key提供了一种与GitLab通信的方式,能够不输密码就进行版本控制 第一步,检查SSH key是否存在 如果存在则把SSH Key放到GitLab上,如果不存在则生成新的SSH Key,再放 ...

  10. python开发 *进程数据隔离.守护进程,进程同步工具 * 180725

    进程数据隔离.守护进程,进程同步工具 一.进程之间的数据隔离: from multiprocessing import Process n=100 #主程序中变量n= def func(): glob ...