话不多说,直接上码↓


 IF OBJECT_ID('tempdb..#Table') IS NOT NULL
BEGIN
DROP TABLE #Table;
END; DECLARE @tbRangeDate TABLE
(
name NVARCHAR() ,
value NVARCHAR()
);
DECLARE @d INT = ;
DECLARE @i INT = ;
DECLARE @TotalCount INT= ; DECLARE @SuccessMoney NVARCHAR() = '';
DECLARE @PutawayMoney NVARCHAR() = '';
--记录星期六,星期天的金额数据
DECLARE @WeekendPutMoney DECIMAL(, )= ;
DECLARE @WeekendSuccessMoney DECIMAL(, )= ;
--DATEADD(DAY,-,GETDATE());
DECLARE @currentDate DATETIME= GETDATE();
DECLARE @topName NVARCHAR() = '';
DECLARE @countValue INT= ;
--近五天数据 -- 声明变量
DECLARE @name AS NVARCHAR() ,
@value AS NVARCHAR(); CREATE TABLE #Table
(
DisplayName VARCHAR() ,
DayValue VARCHAR() ,
SuccessMoney DECIMAL(, ) , --成交
PutawayMoney DECIMAL(, ) --上架
);
WHILE ( @d > )
BEGIN
SET @d = @d - ; INSERT INTO @tbRangeDate
VALUES ( CONVERT(VARCHAR(), DATENAME(WEEKDAY,
DATEADD(DAY, -( @d ),
@currentDate)), ),
CONVERT(VARCHAR(), DATEADD(DAY, -( @d ), @currentDate), ) );
END; WHILE EXISTS ( SELECT name ,
value
FROM @tbRangeDate )
BEGIN
 -- 也可以使用top
SET ROWCOUNT ;
SELECT @name = name ,
@value = value
FROM @tbRangeDate;
SET @SuccessMoney = '';
SET @PutawayMoney = '';
SET @WeekendPutMoney = ;
SET @WeekendSuccessMoney = ; --统计每天上架资源金额
SELECT @PutawayMoney = SUM(a.resourceTotalMoney)
FROM ( SELECT r.Id ,
r.ResourceCode ,
ROW_NUMBER() OVER ( PARTITION BY b.ResourceId ORDER BY b.ResourceId ) AS rowNum ,
SUM(b.Number * b.BasePrice) resourceTotalMoney
FROM ResourceManage.Resource r
JOIN ResourceManage.ResourceItem b ON r.Id = b.ResourceId
WHERE ResourcesType IN ( , , , )
AND r.IsDeleted =
AND r.IsPublish =
AND CONVERT(VARCHAR(), r.PublishTime, ) = @value
GROUP BY r.Id ,
r.ResourceCode ,
b.ResourceId
) a;
--周末上架金额的数据
IF @name = '星期日'
OR @name = '星期六'
BEGIN
SET @WeekendPutMoney = @WeekendPutMoney
+ CAST(@PutawayMoney AS DECIMAL(, ));
END; --统计每天成交金额
SELECT @SuccessMoney = SUM(AmountOfMoney)
FROM Business.ResourceOrder
WHERE OrderSourceType IN ( , , , )
AND IsDeleted =
AND CONVERT(VARCHAR(), CreationTime, ) = @value;
--周末成交金额的数据
IF @name = '星期日'
OR @name = '星期六'
BEGIN
SET @WeekendSuccessMoney = @WeekendSuccessMoney
+ CAST(@SuccessMoney AS DECIMAL(, ));
END; INSERT INTO #Table
( DisplayName ,
DayValue ,
SuccessMoney ,
PutawayMoney
)
VALUES ( @name ,
@value ,
@SuccessMoney ,
@PutawayMoney
); SET ROWCOUNT ;
DELETE FROM @tbRangeDate
WHERE name = @name;
END; SELECT TOP
@topName = DisplayName
FROM #Table; SELECT @countValue = COUNT()
FROM #Table
WHERE DisplayName = '星期六'
OR DisplayName = '星期日'; WHILE ( @i = )
BEGIN
SET @i = @i + ;
DELETE FROM #Table
WHERE DisplayName = '星期六'
OR DisplayName = '星期日';
IF @countValue =
AND ( @topName = '星期二'
OR @topName = '星期三'
OR @topName = '星期四'
OR @topName = '星期五'
)
BEGIN
UPDATE #Table
SET PutawayMoney = PutawayMoney + @WeekendPutMoney
WHERE DisplayName = '星期一';
END;
END; SELECT *
FROM #Table; IF OBJECT_ID('tempdb..#Table') IS NOT NULL
BEGIN
DROP TABLE #Table;
END;

记录sql中统计近五天数据的口径(While+IF)的更多相关文章

  1. sql中对查询出来的数据进行分页

    当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页. sql代码: DECLARE @pageindex INT; - ...

  2. SQL中CRUD C——create 添加数据 R——read 读取数据 U——update 修改数据 D——delete 删除数据

    在SQL server中对数据库的操作: 删除表:drop table 表名修改表:alter table 表名 添加列add 列名 列类型alter table 表名 drop column 列名 ...

  3. SQL中的float类型的数据

    问题1.  如何在SQL中默认的使用float类型的数据 SQL中想要通过计算的方式最快的得到一个float类型的数据,只需要运算的其中一个值后面加上小数点就ok. 比如 :9/2=4 但是 :9/2 ...

  4. Android中常用的五种数据存储方式

    第一种: 使用SharedPreferences存储数据 适用范围: 保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小 ...

  5. sql中使用timestamp增量抽取数据

    网址:http://www.cnblogs.com/shuaifei/p/4469526.html 最近的项目中需要对上百万级的数据进行增量抽取操作,因此了解了一下TIMESTAMP的应用,特此记录 ...

  6. 简单Sql语句统计每年每个月的数据,每个月为数据的每列,简单SQL练习

    有一张表,数据如下 请写出结果为以下的SQL语句. 在mysql中创建表 CREATE TABLE `aa` (  `id` int(10) NOT NULL AUTO_INCREMENT COMME ...

  7. sql中如何获取一条数据中所有字段的名称和值

    declare ) ) --获取表的列名 ,),filename INTO #templist FROM (select cl.name as filename from sys.tables AS ...

  8. [SQL]SQL中把一个字段的数据分多行显示

    其实你完全可以写个自定义函数就OK了 . =================================================================== create func ...

  9. SQL中获取排序分组后数据的脚本

    废话不多说了,先上一段代码,如下所示: select distinct   b.OrgID,b.CompanyID,b.AreaID,b.CustChannelID,b.CustID,b.SaleTo ...

随机推荐

  1. Mysql数据库多对多关系未建新表

    原则上,多对多关系是要新建一个关系表的,当遇到没有新建表的情况下如何查询多对多的SQL呢? FIND_IN_SET(str,strlist) 官网:http://dev.mysql.com/doc/r ...

  2. Mac出现程序闪退的解决方案

    重置PRAM 1. 关机 2.按下电源键后,立即按下command + option + P +R 3.等到电脑出现4次重启的声音后,放开按键,重置成功 4.正常使用

  3. 路由器配置——RIP路由

    一.实验目的:用rip路由实现全网互通 二.拓扑图: 三.具体步骤配置 (1)R1路由器配置 Router>enable  --进入特权模式Router#configure terminal   ...

  4. 求后序遍历x

    题目描述 Description 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列. 输入描述 Input Description 共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串, ...

  5. 图论小专题C

    3 负环及其应用 3.1 判定算法 判断负环只能用"边松弛"算法,也就是Bellman-Ford和SPFA算法.这两个算法都是\(O(NM)\)级别的.因为负环中一定存在一条负边, ...

  6. C# 父类代码动态转换子类

    百度上搜索C# 如何父类运行时转换成子类,没有得到相应答案,突然想起C# 有dynamic类型试试看结果成功了... 以后编写代码类似这样的代码 就可以删减掉了 if (en.type == EMap ...

  7. java将PDF的前几页拆出来组成新pdf

    /** * 截取pdfFile的第from页至第end页,组成一个新的文件名 * @param pdfFile 需要分割的PDF * @param savepath 新PDF * @param fro ...

  8. 包与类的命名 - service tool util 区别

    包与类的命名和定位时,service tool util 常常搞混淆,在此分析一下它们的定位: 名称 特点与定位 独立性 方法和类的属性 util 通用的.与业务无关的,可以独立出来,可供其他项目使用 ...

  9. Fiddler主界面图标简单说明

    Fiddler主界面图标简单说明: 名称 含义 # 抓取HTTP Request的顺序,从1开始,以此递增 Result HTTP状态码 Protocol 请求使用的协议,如HTTP/HTTPS/FT ...

  10. [Javascript]客户端检测

    客户端检测是一种行之有效的开发策略.但不到万不得已,就不要使用客户端检测.先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案. 能力检测 Featu ...