Reputation: 392
I need your help, i have this SQL :
SELECT
(SELECT
COUNT(b.IDPerfilPortal)
FROM
UseCRM.dbo.Produtos b
WHERE
a.IDProduto = b.ID AND b.IDPerfilPortal = 1) AS Completo,
(SELECT
COUNT(b.IDPerfilPortal)
FROM
UseCRM.dbo.Produtos b
WHERE
a.IDProduto = b.ID AND b.IDPerfilPortal >= 2) AS Segmentado
FROM
UseCRM.dbo.Contratos a
WHERE
(a.DataHoraCancelamento IS NULL)
AND (GETDATE() BETWEEN a.DataInicio AND a.DataTermino)
And I'm getting this :
Completo Segmentado
--------------------
1 0
0 1
1 0
1 0
1 0
I need to count the number of Products in Completo and Segmentado. Like this:
Completo Segmentado
--------------------
100 55
I need only one row. How can I do it?
Upvotes: 0
Views: 38
Reputation: 12317
Instead of doing count twice for the different items, you can do sum with case like this:
SELECT
sum(case when b.IDPerfilPortal = 1 then 1 else 0 end) AS Completo,
sum(case when b.IDPerfilPortal >= 2 then 1 else 0 end) AS Segmentado
FROM
UseCRM.dbo.Contratos a
join UseCRM.dbo.Produtos b on a.IDProduto = b.ID
WHERE
(a.DataHoraCancelamento IS NULL)
AND (GETDATE() BETWEEN a.DataInicio AND a.DataTermino)
Upvotes: 3