У меня есть таблица, которая содержит идентификатор банка (не уникальный) и имена банка в таблице. Если название банка содержит ключевое слово «банк», я хочу его ранжировать, и если он имеет «финансовый» рейтинг, он два, а «Траст» получает звание три.sql server rank using keywords
Create table dbo.banknames(id int null,bankname varchar(200) null)
insert into dbo.bankname(1,'U.S. Trust')
insert into dbo.bankname(1,'Bank of america')
insert into dbo.bankname(1,'BOA Financial services')
insert into dbo.bankname(2,'Citizens trust')
insert into dbo.bankname(3,'People''s bank trust')
insert into dbo.bankname(3,'People''s financial service')
Вывод должен выглядеть
Create table dbo.ExpectedOUTPUTbanknames(id int null,bankname varchar(200) null,rank int null)
insert into dbo.ExpectedOUTPUTbankname(1,'U.S. Trust',3)
insert into dbo.ExpectedOUTPUTbankname(1,'Bank of america',1)
insert into dbo.ExpectedOUTPUTbankname(1,'BOA Financial services',2)
insert into dbo.ExpectedOUTPUTbankname(2,'Citizens trust',3)
insert into dbo.ExpectedOUTPUTbankname(3,'People''s bank trust',1)
insert into dbo.ExpectedOUTPUTbankname(3,'People''s financial service',2)
select *
into dbo.OUTPUTbankname
(
SELECT *,1 as RNK FROM dbo.banknames
WHERE (bankname LIKE '%bank%')
UNION
SELECT *,1 as RNK FROM dbo.banknames
WHERE (bankname LIKE '%financial%')
UNION
SELECT *,1 as RNK FROM dbo.banknames
WHERE (bankname LIKE '%trust%')
) qrey
Для bankid = 3, так как bankname имеет как ключевые слова банк и доверие, я получаю 3 строки, 'Народный банк' доверие»с рангом = 1 «Народная финансовая служба» с ранга = 2 «Народный банковский траст» с рангами = 3. Как можно избежать этого
Благодаря MR
Что произойдет, если в спине содержатся ключевые слова mulitple? –
Он должен выбрать самый высокий. Если у банка есть «банк и доверие», он должен быть занят 1, потому что у него есть ключевое слово «bank» – user2726975
. Тогда ответ, который я вам дал ниже, должен работать. –