2016-12-31 1 views
5

私のコードに問題があります:P明らかに正しいですか?とにかく...ここにあるのは... 3つの引数(@cat、@ cutPrice、@option)をとり、@catに似たタイプの複数の結果を返すSTORED PROCと、 <または> @ cutPriceは、「上」または「下」の@optionキーワードに応じて異なります。問題は私がこれを実行するときです...ストアドプロシージャのargsによるフィルタリング

EXEC spBookByPrice 
@cat = 'business', @cutPrice = 0.00, @option = 'above' 

... @option = ''はすべての価格を表示します。とにかくここ

ALTER PROC spBookByPrice 
@cat varchar(12), @cutPrice money, @option varchar(5) 
AS 
BEGIN 
    SELECT 
    title AS 'Title:', 
    type AS 'Category:', 
    price AS 'Price:', 
    CASE 
     WHEN price >= @cutPrice THEN 'above' 
     WHEN price < @cutPrice THEN 'below' 
     --ELSE NULL 
    END AS 'Option:' 
    FROM dbo.titles 
    WHERE 'Option:' LIKE '%' + @option + '%' 
    GROUP BY type, title, price 
    HAVING type LIKE '%' + @cat + '%' 
END 

答えて

2

は何が必要このです....私のコードです:

ALTER PROC spBookByPrice 
@cat varchar(12), @cutPrice money, @option varchar(5) 
AS 
BEGIN 
    SELECT 
    title AS [Title:], 
    type AS [Category:], 
    price AS [Price:], 
    CASE 
     WHEN price >= @cutPrice THEN 'above' 
     WHEN price < @cutPrice THEN 'below' 
     --ELSE NULL 
    END AS [Option:] 
    FROM dbo.titles 
    WHERE (CASE WHEN price >= @cutPrice THEN 'above' 
       WHEN price < @cutPrice THEN 'below' 
      --ELSE NULL 
      END) LIKE '%' + @option + '%' 
    GROUP BY type, title, price 
    HAVING type LIKE '%' + @cat + '%' 
END 
+0

は、私が行方不明になったまさに、あなたにGurwinderありがとう!!!! –

+0

私はちょうど[Option:]エイリアスを完全なCASE文で置き換えなければならなかった –

+0

@Kyleまさに.. :) – GurV

0
select title [Title:], type [Category:], price [Price:], 
    [Option:] = iif(price >= @cutPrice, 'above', 'below') 
from titles 
where type like concat('%', @cat, '%') and (@option = '' 
    or (@option='below' and price < @cutPrice) 
    or (@option='above' and price >= @cutPrice)) 
関連する問題