如何在sql中编写多个count select语句

时间:2013-09-24 20:03:14

标签: sql select count

我需要将两个count语句组合成一个select。可以这样做吗?

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

1 个答案:

答案 0 :(得分:0)

您可以使用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(有效或无效)和SUM这些列的CASE语句。在不知道您的SQL方言的情况下,以下是伪代码表示。

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