加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何统计全天各个时间段产品销量情况(sqlserver)

发布时间:2020-12-12 09:19:27 所属栏目:MsSql教程 来源:网络整理
导读:数据库环境:SQL SERVER 2005 现有一个产品销售实时表,表数据如下: 字段name是产品名称,字段type是销售类型,1表示售出,2表示退货,字段num是数量,字段ctime是操作时间。 要求: 在一行中统计24小时内所有货物的销售(售出,退货)数据,把日期考虑在内

数据库环境:SQL SERVER 2005

现有一个产品销售实时表,表数据如下:

字段name是产品名称,字段type是销售类型,1表示售出,2表示退货,字段num是数量,字段ctime是操作时间。

要求:

  在一行中统计24小时内所有货物的销售(售出,退货)数据,把日期考虑在内。

分析:

  这实际上是行转列的一个应用,在进行行转列之前,需要补全24小时的所有数据。补全数据可以通过系统的数字辅助表

spt_values来实现,进行行转列时,根据type和处理后的ctime分组即可。

1.建表,导入数据

2.补全24小时的数据

= 0 AND number <= 23 ),/*找出表所有的日期*/ x1 AS ( SELECT DISTINCT CONVERT(VARCHAR(100),ctime,23) AS d FROM snake ),/*补全所有日期的24小时*/ x2 AS ( SELECT x1.d,x0.h FROM x1 CROSS JOIN x0 ),x3 AS ( SELECT name,type,num,DATEPART(hour,ctime) AS h FROM snake ),/*整理行转列需要用到的数据*/ x4 AS ( SELECT x2.d,x2.h,x3.name,x3.type,x3.num FROM x2 LEFT JOIN x3 ON x3.h = x2.h )

3.行转列

来看一下最终效果,只有1天的数据,可能看起来不是很直观。

本文的技术点有2个:

 

以上内容是如何统计全天各个时间段产品销量情况(sqlserver)的全部内容,希望大家喜欢。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读