我需要将两个count语句组合成一个select。可以这样做吗?
select dealer
,firstname
,ProductType
,date
,Comments
,COUNT(*) as Total
select dealer
,firstname
,Valid
,Comments
,COUNT(*) as InvalidTotal
答案 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,