2014-02-26 62 views
0

我有一個名爲的OrderId和訂單類型條件裏面COUNT函數使用案例在SQL Server

OrderId OrderType 
------- --------- 
1  Drawer 
2  Pickup 
3  Delivery 
4  Delivery 
5  Drawer 

在我的存儲過程一個具有表中的兩列我想傳遞的OrderType的參數,它會在匹配只返回一個結果OrderType列數據的參數,即如果我通過參數「抽屜」,那麼它應該返回OrderType列的計數,其中OrderType列數據是「抽屜」等。

我該如何使用Count

目前我做的:

select @tempvar1=case @tempvar 
when 'Drawer' 
Then Count(CASE_TABLE.OrderType) --What Should i put here to get desired result? 
end 
select @tempvar1 

整列計數而不是我想只有數匹配OrderType

+0

你問在哪裏使用'WHERE'子句,以獲得您的具體數據?如果是這樣,在第二次選擇後使用'WHERE'子句,就像在普通查詢中那樣。 – Mic1780

+0

不,我問我應該把什麼,以獲得所需的匹配數據,而不是計算整列行 –

+0

請參閱下面的@MattJohnson答案。它看起來像你想用'Co​​unt()'所要做的那樣' – Mic1780

回答

1

我倒是所以是這樣的:

DECLARE @argument VARCHAR(9) = 'Drawer' 

SELECT 
    OrderType, 
    COUNT(OrderType) AS [Count] 
FROM 
    [Order] 
WHERE 
    OrderType = @argument 
GROUP BY 
    OrderType 

結果

OrderType Count 
--------- ----- 
Drawer 2 

您可以在SqlFiddle here測試它。

+0

這是假定SQL Server 2008+('DECLARE'語句) – brazilianldsjaguar

0

調用SP: -

Exec GetOrderType 'Drawer' 

SP: -

CREATE PROCEDURE GetOrderType 
    @OrderType nvarchar(50) 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SELECT 
     COUNT(*) 
    FROM 
     your_table_name 
    WHERE 
     OrderType = @OrderType 
    GROUP BY 
     OrderType 

END 
GO