Click here to Skip to main content
15,891,184 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
SQL
declare @vc_supplier_name varchar(200) =''
declare @in_supplier_type_id int =2
declare @bt_active bit =1

SELECT a.in_supplier_id, dbo.format_fnc_bit(1, a.bt_active) AS vc_active, b.vc_supplier_type_name, a.in_supplier_type_id, a.vc_supplier_name,

    dbo.admin_user_fnc_get_name(1, a.in_updatedby_user_id) AS vc_updated_by, a.dt_updated

    FROM dbo.supplier a

    INNER JOIN dbo.common_data_vw_supplier_type b ON a.in_supplier_type_id = b.in_supplier_type_id

    WHERE a.in_supplier_type_id = @in_supplier_type_id AND a.vc_supplier_name LIKE '%' + @vc_supplier_name + '%'
    AND  a.bt_active = case @in_supplier_type_id when 2 THEN @bt_active

    ORDER BY a.vc_supplier_name


Error comes :Incorrect syntax near the keyword 'ORDER'.

here i want to use bt_active only if @in_supplier_type_id=2
Posted

Quote:
case @in_supplier_type_id when 2 THEN @bt_active

You missed the ending END ( :-) ) here.
 
Share this answer
 
v2
Comments
k@ran 14-Feb-13 15:13pm    
Thanks CPallini It worked for @in_supplier_type_id =2

This query is not executing in case if @in_supplier_type_id is not 2..

What could be reason
fjdiewornncalwe 14-Feb-13 15:47pm    
+5.
Espen Harlinn 15-Feb-13 9:04am    
5'ed!
You need to add an "End" to the end of your case statement.

This:
AND  a.bt_active = case @in_supplier_type_id when 2 THEN @bt_active


should be this:

AND  a.bt_active = case @in_supplier_type_id when 2 THEN @bt_active End


You can also use an Else if need be.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900