#sql #sql-server-2008
#sql #sql-server-2008
Вопрос:
Формат моих данных на данный момент (av_version — это nvarchar)
company av_version
company1 8.5.0.440
company1 8.5.0.332
company1 8.5.0.232
company1 8.5.0.111
company2 10.0.0.1509
company2 10.0.0.2323
company2 10.0.0.1232
company2 10.0.0.2253
company3 8.5.0.232
company3 10.0.0.2253
Что мне нужно, так это запрос, который проверит все записи AV-версии для этой компании, и если 8.5.0 будет указана хотя бы один раз, то это будет отображаться как отдельная компания. В примере данные company1 и company3 будут возвращаемым списком. Сложность здесь в том, что окончание av-версии может быть любым. Любая помощь приветствуется
Ответ №1:
Вы можете использовать LIKE
:
av_version LIKE '8.5.0%'
Ответ №2:
Вы можете создать инструкцию select, которая включает в себя инструкцию select. Например, давайте предположим, что имя таблицы «avcom».
select company, hc_version, max(av_version) as av_version
from
(
select company, av_version, '8.5.0' as hc_version
from avcom
where av_version like '8.5.0%'
)
group by company, hc_version
Запрос не был протестирован! Кроме того, я предположил, что вам может понадобиться что-то вроде последнего / наибольшего номера версии (max (av_version)) для результата в дополнение к результату ‘8.5.0’, который исправлен.
Ответ №3:
SELECT DISTINCT company
FROM atable
WHERE av_version = '8.5.0'
OR av_version LIKE '8.5.0.%'