2013-02-07 4 views
7

Ho la seguente tabella:Come contare il numero di righe con dati specifici in mssql

Articoli:

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

voglio count the number of items con le scorte esistenti, vale a dire, il numero di righe con StockExists='T' . Stavo eseguendo la query come;

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

ma restituisce sempre 1. Qual è il modo giusto per farlo?

Edit:

Inoltre, come eseguire un altro tale operazione Conte e aggiungerli insieme in una riga, per esempio,

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

La tua query sembra soddisfacente [DEMO] (http://sqlfiddle.com/#!6/c0e44/2) – Kaf

risposta

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

Quindi la query dovrebbe funzionare.

Risultato:

EXISTCOUNT 
    2 

Demo

Aggiornamento

Come eseguire un altro tale operazione Conte e aggiungerli insieme in una riga, ad esempio, selezionare il conteggio (StockExists) Da [Articoli] dove StockExists = 'T' e Seleziona conteggio (Tipo) Da [Articoli] dove Type = 'Cellphone'?

È possibile utilizzare SUM con 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 

Risultato:

EXISTCOUNT CELLPHONECOUNT 
    2    2 

Demo

+0

grazie, funziona ora. Cosa posso fare per ottenere un altro conteggio sulla stessa tabella del precedente con alcuni criteri diversi e unire i due conteggi in una singola riga in colonne diverse? –

+0

@TimSchemelter si prega di vedere la modifica. –

1

Select Somma (caso quando il campo = 'questo' allora 1 altrimenti 0 estremità) come totale da YourTable