【问题标题】:How to write multiple count select statement in sql如何在sql中编写多个计数选择语句
【发布时间】:2013-09-24 20:03:13
【问题描述】:

我需要将两个计数语句组合成一个选择。这个可以吗?

select dealer
,firstname
,ProductType
,date
,Comments
,COUNT(*) as Total
select dealer
,firstname
,Valid
,Comments
,COUNT(*) as InvalidTotal

【问题讨论】:

  • 如何判断一个文件是valid还是invalid
  • 整个 select 语句是什么?
  • 你提到了两个计数语句,另一个在哪里??

标签: sql select count


【解决方案1】:

您可以使用 UNION 语句创建一个查询,该查询将返回两行。但是,count(*) 列的列名将来自第一个查询,因此您可以添加一个标志,例如下面示例中的 IsValid 列

  select VR.Dealerid
    ,VR.commissionrunid
    ,VD.ProductType
    ,VD.Valid
    ,VD.Comments,
    1 as IsValid,
    ,COUNT(*) as Total
    UNION ALL
    select VR.Dealerid
    ,VR.commissionrunid
    ,VD.Valid
    ,VD.Comments
    0 as IsValid,
    ,COUNT(*) as InvalidTotal

但是,如果您正在寻找一行,即

  select VR.Dealerid
    ,VR.commissionrunid
    ,VD.ProductType
    ,VD.Valid
    ,VD.Comments,
    ,COUNT(*) as Total
    ,COUNT(*) as InvalidTotal.

然后我们需要看看您如何确定有效与无效以进行计数。这绝对是可行的,您需要创建一个返回 1 或 0(有效或无效)的 CASE 语句并对这些列求和。在不知道你的 SQL 方言的情况下,以下是伪代码表示..

SUM (CASE isValid='Y' then 1 else 0 END) as TotalValid,
SUM (CASE isValid='N' then 1 else 0 END) as TotalInValid,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2010-12-11
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多