如何计算mssql中具有特定数据的行数

时间:2013-02-07 13:04:50

标签: sql-server count

我有下表:

产品:

ID     Type     StockExists  
01     Cellphone   T
02     Cellphone   F
03     Apparrel    T

我希望count the number of items使用现有股票,即StockExists='T'行数。我正在执行查询;

Select count(StockExists) 
From [Items] where StockExists='T'

但它总是返回1.正确的方法是什么?

修改

此外,如何执行另一个此类计数操作并将它们一起添加到一行,例如

Select count(StockExists) 
From [Items] where StockExists='T'` and `Select count(Type) 
From [Items] where Type='Cellphone'` ? 

3 个答案:

答案 0 :(得分:9)

SELECT 
    COUNT(*) As ExistCount 
FROM 
    dbo.Items
WHERE
    StockExists='T'

所以你的查询应该有效。

结果:

EXISTCOUNT
    2

Demo

<强>更新

  

如何执行另一个这样的Count操作并将它们添加到一起   例如,一行,选择计数(StockExists)从[项目]在哪里   StockExists ='T'和选择计数(类型)来自[Items]其中   Type ='手机'?

您可以将SUMCASE

一起使用
SELECT 
  ExistCount = SUM(CASE WHEN StockExists='T' THEN 1 ELSE 0 END) ,
  CellphoneCount = SUM(CASE WHEN Type='Cellphone' THEN 1 ELSE 0 END) 
FROM 
    dbo.Items

结果:

EXISTCOUNT    CELLPHONECOUNT
    2               2

Demo

答案 1 :(得分:1)

选择总和(字段=&#39;此&#39;然后1其他0结束时的情况)为总计 来自YourTable

答案 2 :(得分:0)

在使用CASE时,在如下所示的ELSE情况下最好使用NULL而不是0

 SELECT 
      ExistCount = SUM(CASE WHEN StockExists='T' THEN 1 ELSE NULL END) ,
      TotalCount = COUNT(ID) 
    FROM 
        dbo.Items