2013-02-07 11 views
7

mam poniższej tabeli:Jak policzyć liczbę wierszy z określonych danych w MSSQL

przedmiotów:

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

Chcę count the number of items z istniejących zasobów, czyli liczby wierszy z StockExists='T' . Wykonałem kwerendę jako;

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

ale zawsze powraca 1. Jaki jest właściwy sposób?

Edit:

Ponadto, jak wykonać kolejną operację taką policzyć i dodać je razem w jednym rzędzie, na przykład,

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

Twoje zapytanie wygląda dobrze [DEMO] (http://sqlfiddle.com/#!6/c0e44/2) – Kaf

Odpowiedz

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

Więc zapytanie powinno działać.

Wynik:

EXISTCOUNT 
    2 

Demo

Aktualizacja

Jak wykonać kolejną taką operację policzyć i dodać je razem w jednym rzędzie, na przykład, select count (StockExists) Od [Przedmioty] gdzie StockExists = "T" i Wybierz liczbę (typ) od [Przedmioty] gdzie Typ = 'Telefon komórkowy'?

Można użyć SUM z 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 

Wynik:

EXISTCOUNT CELLPHONECOUNT 
    2    2 

Demo

+0

dzięki, działa teraz. Co mogę zrobić, aby uzyskać kolejną liczbę na tej samej tabeli co poprzednia z różnymi kryteriami i scalić dwie liczby w jednym wierszu w różnych kolumnach? –

+0

@ TimSchemelter zobacz edycję. –

1

Wybierz Sum (przypadek, gdy pole = 'to', a następnie 1 else 0 end) jako Total z YourTable

Powiązane problemy