话不多说,直接上码↓


 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. 响应json数据之发送ajax的请求

    一.前端异步请求代码: <span style="font-size:14px;">$.ajax ({ type: "POST", //请求的方式 ...

  2. MySql大小写配置

    新安装mysql5.7版本后,linux环境下默认是大小写敏感的.可以在客户端执行以下命令: SHOW VARIABLES LIKE '%case%' 可以看到 lower_case_table_na ...

  3. 013_linuxC++之_派生类中权限的调整

    (一)在上一篇012_LINUXC++之_类的继承定义中我们知道在派生类中可以访问public和protectd中的数据 (二)那么我们就可以在派生类中将上面两个中的数据进行权限的修改 (三)程序 # ...

  4. react-native-pg-utils(对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法.)

    react-native-pg-utils 对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法. 每次新建react-native项目之后都会发现有一些很常用的方法在这 ...

  5. 小米oj 有多少个公差为2的等差数列

     有多少个公差为 2 的等差数列 序号:#31难度:有挑战时间限制:1000ms内存限制:10M 描述 给出一个正整数N(2<= N <=10000000),统计有多少公差为2的正整数等差 ...

  6. Hdu 1247 Hat's Words(Trie树)

    Hat's Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...

  7. 我理解的windows中断管理

    只谈外部中断的windows内核管理,异常和trap不在此文的讨论之列. 1. windows中断总貌 在windows中,物理上的中断源被抽象为KINTERRUPT结构.一个中断源在windows中 ...

  8. NVMe Windows 支持情况

    From NVMe 官网: Windows Driver – Microsoft Inbox • Closed source driver (Microsoft)• Inbox driver to W ...

  9. Pytest学习笔记(一) 环境安装及入门

    简介 pytest是python的一个单元测试框架,类似于unittest,相对unittest来说,pytest使用更简单,功能更强大. 安装 pip3 install -U pytest 查看版本 ...

  10. Leetcode题目279.完全平方数(动态规划-中等)

    题目描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 输出: 3 解 ...