2016-12-31 7 views
5

में तर्कों द्वारा फ़िल्टरिंग मुझे अपने कोड में कोई समस्या है: पी स्पष्ट रूप से सही है ?! वैसे भी ... यह वही है जो मैं चाहता हूं ... मैं एक स्टोर्ड प्रोक चाहता हूं जो 3 तर्क (@cat, @cutPrice, @option) लेता है और कई परिणामों को लौटाता है जिनमें @cat के समान प्रकार है, और एक मूल्य जो है < या> @cutPrice @ उपरोक्त कीवर्ड 'उपरोक्त' या 'नीचे' के आधार पर। समस्या यह है कि जब मैं इसे निष्पादित करता हूं ...स्टोर्ड प्रो

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

आप गुरविंदर धन्यवाद, मैं वास्तव में क्या याद आ रही थी !!!! –

+0

मुझे बस [केस:] उपनाम को पूर्ण केस स्टेटमेंट –

+0

@ केली ठीक से बदलना पड़ा .. :) – 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)) 
संबंधित मुद्दे