记录sql中统计近五天数据的口径(While+IF)
话不多说,直接上码↓
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)的更多相关文章
- sql中对查询出来的数据进行分页
当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页. sql代码: DECLARE @pageindex INT; - ...
- SQL中CRUD C——create 添加数据 R——read 读取数据 U——update 修改数据 D——delete 删除数据
在SQL server中对数据库的操作: 删除表:drop table 表名修改表:alter table 表名 添加列add 列名 列类型alter table 表名 drop column 列名 ...
- SQL中的float类型的数据
问题1. 如何在SQL中默认的使用float类型的数据 SQL中想要通过计算的方式最快的得到一个float类型的数据,只需要运算的其中一个值后面加上小数点就ok. 比如 :9/2=4 但是 :9/2 ...
- Android中常用的五种数据存储方式
第一种: 使用SharedPreferences存储数据 适用范围: 保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小 ...
- sql中使用timestamp增量抽取数据
网址:http://www.cnblogs.com/shuaifei/p/4469526.html 最近的项目中需要对上百万级的数据进行增量抽取操作,因此了解了一下TIMESTAMP的应用,特此记录 ...
- 简单Sql语句统计每年每个月的数据,每个月为数据的每列,简单SQL练习
有一张表,数据如下 请写出结果为以下的SQL语句. 在mysql中创建表 CREATE TABLE `aa` ( `id` int(10) NOT NULL AUTO_INCREMENT COMME ...
- sql中如何获取一条数据中所有字段的名称和值
declare ) ) --获取表的列名 ,),filename INTO #templist FROM (select cl.name as filename from sys.tables AS ...
- [SQL]SQL中把一个字段的数据分多行显示
其实你完全可以写个自定义函数就OK了 . =================================================================== create func ...
- SQL中获取排序分组后数据的脚本
废话不多说了,先上一段代码,如下所示: select distinct b.OrgID,b.CompanyID,b.AreaID,b.CustChannelID,b.CustID,b.SaleTo ...
随机推荐
- Spring boot连接3.03以上的mongodb 权限验证问题
由于3.0.3,mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证,所有Spring boot连接MongoDB时会出现用户认证失败. 解决方法: > use adm ...
- 简单理解yii事件
https://blog.csdn.net/qq43599939/article/details/80363827 通过观察者来理解yii事件 测试 class TestController ext ...
- KindEditor完全复制word内容
我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...
- sudo/su
linux用户分为根用户/ 普通用户 系统用户 根用户和普通用户是可以实际登录到系统中的,普通用户是没办法使用useradd添加新用户的,只有根用户有权限 当然,也可以使用su su 是切换用户的意思 ...
- 【csp模拟赛4】旅行计划 (travelling.cpp)--欧拉回路
[题目描述] 小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅 行时并不关心到达了哪个网红景点打了哪些卡.小 Z 更关注沿路的风光,而且 小 Z 觉得,尽管多次到达同一个地方, ...
- c语言if-else的效率比较
闲着没事测试下if-else的执行效率 测试环境:Mac pro i7 2.3Ghz ...编译器gcc 4.9,代码没有进行优化-O0: 测试代码:c代码1: int main(){ int n=1 ...
- Financial Management(SDUT 1007)
Problem Description Larry graduated this year and finally has a job. He's making a lot of money, but ...
- 总结调试webview的方式(安卓)
参考文章: 移动端真机调试指南 Mac 平台 Android 使用 Charles 抓包方法 Charles使用Map Local和Rewrite提高开发效率 通过chrome直接进行调试 chrom ...
- Django环境搭建win(二)
Django 1.11.x 支持 Python 2.7, 3.4, 3.5 和 3.6,17年4月4号 已经发布(长期支持版本 LTS) win7下: 一.使用pip安装 1.首先要安装pip 2.p ...
- 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践
目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...