2014-02-26 64 views
0

我的表看起來像下面顯示的 我有一個查詢,它與匹配OrderType列的OrderType數據。假設我設置變量爲'Delivery'它返回我2,我想如果我通過'所有」,這是不是在列返回我充滿column.Guide我的所有數據如何獲取的所有數據。對於演示http://sqlfiddle.com/#!6/bcff9/2如果在Where子句Sql Server

enter image description here

+0

感謝Yuck格式化 –

回答

0

如果你只是想返回所有的所有記錄的OrderTypeCOUNT,只需添加OR @argument = 'All'到您的SQL查詢:

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

小提琴:http://sqlfiddle.com/#!6/8e718

如果你的意思是你想只是返回一行All與一切的總和,但它會變得有點棘手:

SELECT 
    CASE @argument 
    WHEN 'All' THEN 'ALL' 
    ELSE OrderType 
    END [OrderType], 
    COUNT(*) AS [Count] 
FROM [Order] 
WHERE OrderType = @argument 
    or @argument = 'All' 
GROUP BY 
    CASE @argument 
    WHEN 'All' THEN 'ALL' 
    ELSE OrderType 
    END 

小提琴:http://sqlfiddle.com/#!6/8e718/5

0

您可以添加到您的where子句:

or (@argument='All' and 1=1) 

它將使用您的初始'OrderType = @argument',但如果@argument是'全部',那麼它將顯示一切。

+0

我想你不需要和1 = 1 ... – jle