У меня есть простая проблема, хотя я считаю, что она проста, я не могу понять то же самое.
Предположим, у меня есть таблица ниже с точно такими же данными, как указано ниже:
CREATE TABLE #temp
(
link varchar(255),
number INT,
fname varchar(255)
)
insert into #temp VALUES ('abc',1,'f1')
insert into #temp VALUES ('abc',2,'f2')
insert into #temp VALUES ('abc',3,'f3')
insert into #temp VALUES ('abc',4,'f6')
insert into #temp VALUES ('abc',10,'f100')
insert into #temp VALUES ('abe',-1,'f0')
insert into #temp VALUES ('abe',1,'f1')
insert into #temp VALUES ('abe',2,'f2')
insert into #temp VALUES ('abe',3,'f3')
insert into #temp VALUES ('abe',4,'f6')
insert into #temp VALUES ('abe',20,'f200')
insert into #temp VALUES ('cbe',-1,'f0')
insert into #temp VALUES ('cbe',1,'f1')
insert into #temp VALUES ('cbe',2,'f2')
insert into #temp VALUES ('cbe',3,'f3')
Теперь для данной ссылки мне нужно получить максимальное «число» и соответствующее «имя», которое имеет максимальное «число» для данной «ссылки».
1) Пример: если ссылка 'abc', вывод должен быть
abc, 10, f100
2) Пример: если ссылка, если 'abe', вывод должен быть
abe, 20, f200
3) Теперь ссылка также может быть задана в виде шаблона, например (ссылка как 'ab%'), поэтому вывод должен быть
abc, 10, f100
abe, 20, f200
4) if (ссылка типа 'cb%'), поэтому вывод должен быть
cbe, 3, f3
Любая помощь в написании этой группы по запросу. У меня есть решение с использованием CAST и строки concat, как показано ниже, но это, похоже, неэффективно.
select link,number,fname from #temp
where link like 'ab%' and link+'_'+CAST(number AS varchar(255))
in (select link+'_'+CAST(MAX(number) AS varchar(255)) from #temp
group by link)
Спасибо ..