DECLARE @Books TABLE ( [ID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY, [Title] NVARCHAR(MAX) NOT NULL, [Description] NVARCHAR(MAX) NOT NULL, [Date] DATETIME NOT NULL ) INSERT INTO @Books SELECT 'War and Peace','A Russian Epic','2008-01-01' UNION SELECT 'Dogs of War','Mercenary Stories','2006-01-01' UNION SELECT 'World At Arms','A Story of World War Two','2007-01-01' UNION SELECT 'The B Team','Street Wars','2005-01-01' SELECT * FROM ( SELECT *, CASE WHEN [Title] LIKE '%war%' THEN 1 WHEN [Description] LIKE '%war%' THEN 2 END AS Ord FROM @Books WHERE [Title] LIKE '%war%' OR [Description] LIKE '%war%' ) AS Derived ORDER BY Ord ASC, [Date] ASC
I believe this gives you what you want, but due to the extra workload in CASE derived status, it may not have good performance.
Meff source share