热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:SQL周日月年数据统计

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SQL周日月年数据统计相关的知识,希望对你有一定的参考价值。本文只是记录在项目中用到的统计的SQL语句,记一笔以防忘了

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SQL周日月年数据统计相关的知识,希望对你有一定的参考价值。


本文只是记录在项目中用到的统计的SQL语句,记一笔以防忘了


///


/// 获取统计数据
///

/// 店面ckey
/// 统计类型(日、周、月、年)
///
[WebMethod(true)]
public static string GetData3(string CKEY, string type)
{
StringBuilder strSql
= new StringBuilder();

#region SQL语句
if (type == "0")
{
#region
strSql.AppendFormat(
" WITH WeekDate ");
strSql.AppendFormat(
" AS ( SELECT DATEADD(d, -DAY(GETDATE()) + 1, GETDATE()) AS riqi ");
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT riqi + 1 FROM WeekDate ");
strSql.AppendFormat(
" WHERE riqi + 1 <= ( SELECT DATEADD(d, -DAY(GETDATE()), DATEADD(m, 1, GETDATE())) ) ");
strSql.AppendFormat(
" ) ");
strSql.AppendFormat(
" SELECT CONVERT(CHAR(8), a.riqi, 112) AS 日 ,DAY (CONVERT(CHAR(8), a.riqi, 112)) AS DDay, ");
strSql.AppendFormat(
" ISNULL(tbB.日成交量, 0) AS 日成交量 , ");
strSql.AppendFormat(
" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN NULL ");
strSql.AppendFormat(
" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN ISNULL(tbB.日成交量, 0) ");
strSql.AppendFormat(
" END AS 日成交数量 , ");
strSql.AppendFormat(
" tbB.日实收金额 , ");
strSql.AppendFormat(
" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN NULL ");
strSql.AppendFormat(
" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN ISNULL(tbB.日实收金额, 0) ");
strSql.AppendFormat(
" END AS 日实收金额2 ");
strSql.AppendFormat(
" FROM WeekDate a ");
strSql.AppendFormat(
" LEFT JOIN ( SELECT ( SELECT COUNT(1) ");
strSql.AppendFormat(
" FROM dbo.CustomerBase base ");
strSql.AppendFormat(
" WHERE CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" AND " + impomo.TotalConsumptionMon + " > 0 ");
strSql.AppendFormat(
" AND TargetDate = cus.TargetDate ");
strSql.AppendFormat(
" ) 日成交量 , ");
strSql.AppendFormat(
" ISNULL(( SELECT SUM(Total) ");
strSql.AppendFormat(
" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM PaymentContent AS pay ");
strSql.AppendFormat(
" WHERE PayDate = cus.TargetDate ");
strSql.AppendFormat(
" AND pay.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.CardRecharge8 AS recharge ");
strSql.AppendFormat(
" WHERE RechargDate = cus.TargetDate ");
strSql.AppendFormat(
" AND recharge.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.PaymentSwimming AS payswim ");
strSql.AppendFormat(
" WHERE PayDate = cus.TargetDate ");
strSql.AppendFormat(
" AND payswim.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM WarePaymentContent AS ware ");
strSql.AppendFormat(
" WHERE PayDate = cus.TargetDate ");
strSql.AppendFormat(
" AND ware.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" ) B ");
strSql.AppendFormat(
" ), 0) AS 日实收金额 , ");
strSql.AppendFormat(
" TargetDate 日 ");
strSql.AppendFormat(
" FROM dbo.CustomerBase cus ");
strSql.AppendFormat(
" WHERE YEAR(TargetDate) = YEAR(GETDATE()) ");
strSql.AppendFormat(
" AND MONTH(TargetDate) = MONTH(GETDATE()) ");
strSql.AppendFormat(
" GROUP BY TargetDate ");
strSql.AppendFormat(
" ) AS tbB ON CONVERT(CHAR(8), a.riqi, 112) = tbB.日 ");
#endregion
}
else if (type == "1")
{
#region
strSql.AppendFormat(
" WITH WeekDate ");
strSql.AppendFormat(
" AS ( SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0) AS riqi ");
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT riqi + 1 FROM WeekDate ");
strSql.AppendFormat(
" WHERE riqi + 1 <= ( SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 6) ) ");
strSql.AppendFormat(
" ) ");
strSql.AppendFormat(
" SELECT CONVERT(CHAR(8), a.riqi, 112) AS 日 , ");
strSql.AppendFormat(
" DATENAME(weekday,CONVERT(CHAR(8), a.riqi, 112)) DDay, ");
strSql.AppendFormat(
" ISNULL(tbB.日成交量, 0) AS 日成交量 , ");
strSql.AppendFormat(
" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN NULL ");
strSql.AppendFormat(
" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN ISNULL(tbB.日成交量, 0) ");
strSql.AppendFormat(
" END AS 日成交数量 , ");
strSql.AppendFormat(
" tbB.日实收金额 , ");
strSql.AppendFormat(
" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN NULL ");
strSql.AppendFormat(
" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");
strSql.AppendFormat(
" THEN ISNULL(tbB.日实收金额, 0) ");
strSql.AppendFormat(
" END AS 日实收金额2 ");
strSql.AppendFormat(
" FROM WeekDate a ");
strSql.AppendFormat(
" LEFT JOIN ( SELECT ( SELECT COUNT(1) ");
strSql.AppendFormat(
" FROM dbo.CustomerBase base ");
strSql.AppendFormat(
" WHERE CKEY = ‘{0}‘", CKEY);
strSql.AppendFormat(
" AND " + impomo.TotalConsumptionMon + " > 0 ");
strSql.AppendFormat(
" AND TargetDate = cus.TargetDate ");
strSql.AppendFormat(
" ) 日成交量 , ");
strSql.AppendFormat(
" ISNULL(( SELECT SUM(Total) ");
strSql.AppendFormat(
" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM PaymentContent AS pay ");
strSql.AppendFormat(
" WHERE PayDate = cus.TargetDate ");
strSql.AppendFormat(
" AND pay.CKEY = ‘{0}‘", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.CardRecharge8 AS recharge ");
strSql.AppendFormat(
" WHERE RechargDate = cus.TargetDate ");
strSql.AppendFormat(
" AND recharge.CKEY = ‘{0}‘", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.PaymentSwimming AS payswim ");
strSql.AppendFormat(
" WHERE PayDate = cus.TargetDate ");
strSql.AppendFormat(
" AND payswim.CKEY = ‘{0}‘", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM WarePaymentContent AS ware ");
strSql.AppendFormat(
" WHERE PayDate = cus.TargetDate ");
strSql.AppendFormat(
" AND ware.CKEY = ‘{0}‘", CKEY);
strSql.AppendFormat(
" ) B ");
strSql.AppendFormat(
" ), 0) AS 日实收金额 , ");
strSql.AppendFormat(
" TargetDate 日 ");
strSql.AppendFormat(
" FROM dbo.CustomerBase cus ");
strSql.AppendFormat(
" WHERE DATEPART(wk, TargetDate) = DATEPART(wk, GETDATE()) ");
strSql.AppendFormat(
" AND DATEPART(yy, TargetDate) = DATEPART(yy, GETDATE()) ");
strSql.AppendFormat(
" GROUP BY TargetDate ");
strSql.AppendFormat(
" ) AS tbB ON CONVERT(CHAR(8), a.riqi, 112) = tbB.日 ");
#endregion
}
else if (type == "2")
{
#region
strSql.AppendFormat(
"SELECT YearMonth.月 , ");
strSql.AppendFormat(
" tb.月成交量 , ");
strSql.AppendFormat(
" CASE WHEN YearMonth.月 > MONTH(GETDATE()) THEN NULL ");
strSql.AppendFormat(
" WHEN YearMonth.月 <= MONTH(GETDATE()) THEN ISNULL(tb.月成交量, 0) ");
strSql.AppendFormat(
" END AS 月成交数量 , ");
strSql.AppendFormat(
" tb.月实收总金额 , ");
strSql.AppendFormat(
" CASE WHEN YearMonth.月 > MONTH(GETDATE()) THEN NULL ");
strSql.AppendFormat(
" WHEN YearMonth.月 <= MONTH(GETDATE()) THEN ISNULL(tb.月实收总金额, 0) ");
strSql.AppendFormat(
" END AS 月实收总金额2 ");
strSql.AppendFormat(
" FROM ( SELECT 1 AS 月 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ");
strSql.AppendFormat(
" UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 ");
strSql.AppendFormat(
" ) AS YearMonth ");
strSql.AppendFormat(
" LEFT JOIN ( SELECT ( SELECT COUNT(1) ");
strSql.AppendFormat(
" FROM dbo.CustomerBase base ");
strSql.AppendFormat(
" WHERE CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" AND " + impomo.TotalConsumptionMon + " > 0 ");
strSql.AppendFormat(
" AND MONTH(TargetDate) = MONTH(cus.TargetDate) ");
strSql.AppendFormat(
" ) 月成交量 , ");
strSql.AppendFormat(
" ISNULL(( SELECT SUM(Total) ");
strSql.AppendFormat(
" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM PaymentContent AS pay ");
strSql.AppendFormat(
" WHERE MONTH(PayDate) = MONTH(cus.TargetDate) ");
strSql.AppendFormat(
" AND pay.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.CardRecharge8 AS recharge ");
strSql.AppendFormat(
" WHERE MONTH(RechargDate) = MONTH(cus.TargetDate) ");
strSql.AppendFormat(
" AND recharge.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.PaymentSwimming AS payswim ");
strSql.AppendFormat(
" WHERE MONTH(PayDate) = MONTH(cus.TargetDate) ");
strSql.AppendFormat(
" AND payswim.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM WarePaymentContent AS ware ");
strSql.AppendFormat(
" WHERE MONTH(PayDate) = MONTH(cus.TargetDate) ");
strSql.AppendFormat(
" AND ware.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" ) B ");
strSql.AppendFormat(
" ), 0) AS 月实收总金额 , ");
strSql.AppendFormat(
" MONTH(TargetDate) 月 ");
strSql.AppendFormat(
" FROM dbo.CustomerBase cus ");
strSql.AppendFormat(
" WHERE YEAR(TargetDate) = YEAR(GETDATE()) ");
strSql.AppendFormat(
" GROUP BY MONTH(cus.TargetDate) ");
strSql.AppendFormat(
" ) AS tb ON YearMonth.月 = tb.月 ");
#endregion
}
else if (type == "3")
{
#region
strSql.AppendFormat(
"SELECT ( SELECT COUNT(1) ");
strSql.AppendFormat(
" FROM dbo.CustomerBase base ");
strSql.AppendFormat(
" WHERE CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" AND " + impomo.TotalConsumptionMon + " > 0 ");
strSql.AppendFormat(
" AND YEAR(TargetDate) = YEAR(cus.TargetDate) ");
strSql.AppendFormat(
" ) 年成交量 , ");
strSql.AppendFormat(
" CONVERT(NVARCHAR(20),CONVERT(DECIMAL(18,2),ISNULL(( SELECT SUM(Total) ");
strSql.AppendFormat(
" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM PaymentContent AS pay ");
strSql.AppendFormat(
" WHERE YEAR(PayDate) = YEAR(cus.TargetDate) ");
strSql.AppendFormat(
" AND pay.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.CardRecharge8 AS recharge ");
strSql.AppendFormat(
" WHERE YEAR(RechargDate) = YEAR(cus.TargetDate) ");
strSql.AppendFormat(
" AND recharge.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM dbo.PaymentSwimming AS payswim ");
strSql.AppendFormat(
" WHERE YEAR(PayDate) = YEAR(cus.TargetDate) ");
strSql.AppendFormat(
" AND payswim.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" UNION ALL ");
strSql.AppendFormat(
" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total ");
strSql.AppendFormat(
" FROM WarePaymentContent AS ware ");
strSql.AppendFormat(
" WHERE YEAR(PayDate) = YEAR(cus.TargetDate) ");
strSql.AppendFormat(
" AND ware.CKEY = ‘{0}‘ ", CKEY);
strSql.AppendFormat(
" ) B ");
strSql.AppendFormat(
" ), 0))) AS 年实收总金额 , ");
strSql.AppendFormat(
" YEAR(TargetDate) 年 ");
strSql.AppendFormat(
" FROM dbo.CustomerBase cus ");
strSql.AppendFormat(
" GROUP BY YEAR(TargetDate) ");
#endregion
}
#endregion
DataTable table
= DBHelper.GetDateTable(strSql.ToString());
string rs = Newtonsoft.Json.JsonConvert.SerializeObject(table);
return rs;
}

 


推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
author-avatar
真理往往是废话
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有