【问题标题】:Counting results of rows in SQL ServerSQL Server 中的行计数结果
【发布时间】:2016-05-06 17:00:49
【问题描述】:

我需要你的帮助,我有这个 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 中的产品数量。像这样:

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

我只需要一排。我该怎么做?

【问题讨论】:

    标签: sql sql-server select count


    【解决方案1】:

    您可以像这样对大小写求和,而不是对不同的项目进行两次计数:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多