2016-05-06 8 views
0

は、私はこの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) 

そして私は、この取得しています:

Completo Segmentado 
-------------------- 
    1   0 
    0   1 
    1   0 
    1   0 
    1   0 

を私は製品の数をカウントする必要がありますコンプリートとセグメンタードこのように:

Completo Segmentado 
-------------------- 
    100   55 

私は1行だけ必要です。どうしたらいいですか?

答えて

3

の代わりに別のアイテムのために二回のカウントをして、あなたはこのようなケースで合計を行うことができます。勤務

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) 
+0

!ありがとうございます。 –