7

私は次の表を持っています:

アイテム:

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を返しています。それを行う正しい方法は何ですか?

編集:

また、別のそのようなカウント操作を実行し、それらを1つの行に追加する方法。たとえば、

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

3 に答える 3

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

したがって、クエリは機能するはずです。

結果:

EXISTCOUNT
    2

デモ

アップデート

別のそのようなカウント操作を実行し、それらを1つの行に追加する方法。たとえば、Select count(StockExists)From [Items] where StockExists ='T'およびSelectcount(Type)From [Items] where Type ='Cellphone'?

SUMで使用できますCASE

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

デモ

于 2013-02-07T13:08:38.167 に答える
1

YourTableから合計としてSum(Case when field ='this' then 1 else 0 end)を選択します

于 2015-04-17T14:16:08.800 に答える
0

CASE WHENを使用する場合、以下のようなELSEの場合は0よりもNULLを使用する方が適切です。

 SELECT 
      ExistCount = SUM(CASE WHEN StockExists='T' THEN 1 ELSE NULL END) ,
      TotalCount = COUNT(ID) 
    FROM 
        dbo.Items
于 2020-02-05T13:11:28.630 に答える