话不多说,直接上码↓


 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. BZOJ 3551/3545: [ONTAK2010]Peaks加强版 (Kruskal树+dfs序上的主席树+倍增)

    Orz PoPoQQQ 学到了维护子树信息的时候用dfsdfsdfs序套主席树节省线段树空间. 学到了怎么用指针写可持久化线段树-emmm- CODE 只贴上3551加强版带强制在线的代码 #incl ...

  2. Qbxt 模拟赛 Day4 T2 gcd(矩阵乘法快速幂)

    /* 矩阵乘法+快速幂. 一开始迷之题意.. 这个gcd有个规律. a b b c=a*x+b(x为常数). 然后要使b+c最小的话. 那x就等于1咯. 那么问题转化为求 a b b a+b 就是斐波 ...

  3. mac使用brew安装的PHP替换自带的PHP

    在.zshrc文件后面加上 export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"

  4. jquery.qrcode.js生成二维码(前端生成二维码)

    官网地址:http://jeromeetienne.github.io/jquery-qrcode/ 第一步引入插件: <script type='text/javascript' src='h ...

  5. Python数据抓取(3) —抓取标题、时间及链接

    本次分享,jacky将跟大家分享如何将第一财经文章中的标题.时间以及链接抓取出来 (一)观察元素抓取位置 网页的原始码很复杂,我们必须找到特殊的元素做抽取,怎么找到特殊的元素呢?使用开发者工具检视每篇 ...

  6. Django基础之命名空间模式(include)

    即使不同的APP使用相同的URL名称,URL的命名空间模式也可以让你唯一反转命名的URL. 例如: project中的urls.py from django.conf.urls import url, ...

  7. Educational Codeforces Round 64 (Rated for Div. 2) A,B,C,D,E,F

    比赛链接: https://codeforces.com/contest/1156 A. Inscribed Figures 题意: 给出$n(2\leq n\leq 100)$个数,只含有1,2,3 ...

  8. docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"ping\": executable file not found in $PATH": unknown.

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting cont ...

  9. springmvc源码解读(简介)

    1.客户端请求提交的DispatcherServlet 2.由DispatcherServlet控制器查询一个或者多个HandlerMapping,找到处理请求的Controller. 3.Dispa ...

  10. legend3---11、php前端模块化开发

    legend3---11.php前端模块化开发 一.总结 一句话总结: 把常用的前端块(比如课程列表,比如评论列表)放进模块列表里面,通过外部php变量给数据,可以很好的实现复用和修改 页面调用 @p ...