Приведенные выше ответы расточительны, поскольку подзапросы собирают, а затем отклоняют потенциально большое количество строк. Вы можете улучшить ситуацию, используя подзапросы.
declare @Recs int = 10;
with cte1 as (
SELECT TOP (@Recs)
a_object_ID as [id],
a_object_name as [name],
'A_object' as [Type]
FROM [database].[dbo].[table_a]
WHERE a_object_name LIKE @Search + '%'
)
, cte2 as
(
SELECT TOP (@Recs)
a_object_ID as [id],
a_object_name as [name],
'B_object' as [Type]
FROM [database].[dbo].[table_a]
WHERE a_object_name LIKE @Search + '%'
)
SELECT TOP (@Recs) [id], [name], [Type]
(
select [id], [name], [Type] from cte1
union all
select [id], [name], [Type] from cte2
) SQ
ORDER BY [Name]