In the following sample data i need to select all records where
ModelOut=ModelOut(all)ModelIn<>ModelOutModelIn=ModelOut
The problem is ModelIn<>ModelOut because i don’t know how to do it with CASE statement in where clause.
Declare @type int;
SET @type=2; --- ModelIn <> ModelOut
Create table #Data(ID int, ModelIn varchar(10), ModelOut varchar(10))
INSERT INTO #Data
SELECT 1 AS ID,'A' AS ModelIn, 'B' AS ModelOut
UNION ALL
SELECT 2 AS ID,'B' AS ModelIn, 'B' AS ModelOut
UNION ALL
SELECT 3 AS ID,'C' AS ModelIn, 'D' AS ModelOut
UNION ALL
SELECT 4 AS ID,'D' AS ModelIn, 'D' AS ModelOut
SELECT * FROM #Data
WHERE ModelOut =
CASE @type
WHEN 1 THEN ModelOut --- all
WHEN 2 THEN ??? --- ModelIn <> ModelOut
WHEN 3 THEN ModelIn --- ModelOut = ModelIn
END
;
Drop table #Data;
You don’t need
CASEfor your query (in fact, it only complicates things here, I’d say). Just write your query like this: