-1

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

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

1 回答 1

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

SUM (CASE isValid='Y' then 1 else 0 END) as TotalValid,
SUM (CASE isValid='N' then 1 else 0 END) as TotalInValid,
于 2013-09-24T20:05:01.050 回答