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

各位大神求助,商城订单统计的问题

selectr_seller.r_nameas渠道,count(r_saleorder.r_orderstatus)as订单数

 select r_seller.r_name as 渠道 , count(r_saleorder.r_orderstatus) as 订单数
                            from r_saleorder left join r_seller on r_seller.r_sellerid = r_saleorder.r_sellerid  
                            group by r_seller.r_name


上面是我统计的代码,只能统计某个渠道的所有的订单,我如何根据订单状态统计订单数,如:


 select r_seller.r_name as 渠道 ,
count(1) as 已付款,
count(1) as 已审核,
 count(1) as 退货
                            from r_saleorder left join r_seller on r_seller.r_sellerid = r_saleorder.r_sellerid  
                            group by r_seller.r_name


如何统计呢?

3 个解决方案

#1


顶起来~~~~~

#2


    select s.r_name as 渠道 ,
           count(o.r_sellerid) - count(nullif(o.r_status,1)) as 已付款,
           count(o.r_sellerid) - count(nullif(o.r_status,2)) as 已审核,
           count(o.r_sellerid) - count(nullif(o.r_status,3)) as 退货
      from r_seller s
 left join r_saleorder o
        on s.r_sellerid = o.r_sellerid  
  group by s.r_name

我估计你左联接的方向错了——按所有渠道统计(包括数量0),而不是统计仅和订单相关的渠道。
帮你改过来了。

#3


自己解决了,谢谢大神!

  select r_seller.r_name as 渠道 , 
   sum(case when r_saleorder.r_orderstatus = 1 then 1 else 0 end) as 已付款,
   sum(case when r_saleorder.r_orderstatus = 3 then 1 else 0 end) as 等待出库,
   sum(case when r_saleorder.r_orderstatus = 8 then 1 else 0 end) as 完成
        from r_saleorder left join r_seller on r_seller.r_sellerid = r_saleorder.r_sellerid   
        group by r_seller.r_name 


引用 2 楼 Tiger_Zhao 的回复:
    select s.r_name as 渠道 ,
           count(o.r_sellerid) - count(nullif(o.r_status,1)) as 已付款,
           count(o.r_sellerid) - count(nullif(o.r_status,2)) as 已审核,
           count(o.r_sellerid) - count(nullif(o.r_status,3)) as 退货
      from r_seller s
 left join r_saleorder o
        on s.r_sellerid = o.r_sellerid  
  group by s.r_name

我估计你左联接的方向错了——按所有渠道统计(包括数量0),而不是统计仅和订单相关的渠道。
帮你改过来了。

推荐阅读
  • 这篇文章主要讲解了“SQLServer与Access数据库ASP代码有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
  • 本文介绍如何在SQL Server中利用WITH子句和窗口函数ROW_NUMBER()来查询每个类型下的最新数据行。示例包括表结构、数据插入以及最终的查询语句。 ... [详细]
  • 数据库环境:SQLSERVER2005  有一个test表,其表结构及数据如下图1。其中,id是主键,mid是当前节点,pid是父节点。要求:查出每个节点的根节点,如图2所示。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 关于SQLSERVER的全文目录跟全文索引的区别
    很久没有写随笔了,本来之前想写一篇关于SQLSERVER全文索引的随笔,可惜没有时间,一直拖到现在才有时间写,不好意思让各位久等了~先介绍一下SQLSERVER中的存储类对象,哈哈,先介绍一下概念嘛 ... [详细]
  • 定制数据层关键字:数据层,访问,元数据,数据访问模型http://www.gaodaima.com/35448.html定制数据层_sqlserver ... [详细]
  • SQLServer2008全套 数据库简介,分离,收缩,快照
    第三课视频笔记:联机丛书的使用附加和分离数据库---收缩数据库--------数据库快照 ... [详细]
  • 假设我有一张源表customer_account中有一个字段crm_id_content,字段的内容大概为这种模式<r><uid{F7898717-4954-E123 ... [详细]
  • sqldouble222.22222222如何转换成字符串222.22222222%convertcast都是保留4位小数。 ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 转自:http:blog.sina.com.cnsblog_67419c420100vmkt.html 1.为什么要使用blocks将一个blocks作为函数或者方法的参数传递,可 ... [详细]
  • SQL 数据恢复技巧:利用快照实现高效恢复
    本文详细介绍了如何在 SQL 中通过数据库快照实现数据恢复,包括快照的创建、使用及恢复过程,旨在帮助读者深入了解这一技术并有效应用于实际场景。 ... [详细]
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社区 版权所有