У меня есть таблица ниже:
table1:
filename File_ID date version
Broker1_file_12312 5093 20180108 1
Broker1_file_1sa3e_Renamed 3956 20180108 2
Broker2_file_d3223f 3109 20180108 1
Broker2_file_j3df 4526 20180108 2
Broker2_file_dj3498_interest 3574 20180108 3
Broker3_file_fj934f 5603 20180108 1
Broker3_file_jdf34f 5225 20180108 1
Broker3_file_K9d043 5926 20180108 1
Broker4_file_c34km 4865 20180108 1
Broker5_file_cf4k3 3212 20180108 1
Мне нужно выбрать «имя файла» и «file_ID» в выводе на основе условий:
- имя файла должно совпадать со списком шаблонов, но не должно содержать значений из другого списка шаблонов
- версия должна быть последней, т.е. max (версия)
- Если шаблон не совпадает (ошибка 1) или существует более 1 файла (ошибка 2), это может показать эту ошибку.
Приведенный ниже код работает, но я не могу включить функцию «не нравится» и, выбирая последнюю версию
SELECT t1.file_id, vals.val
FROM
table1 t1
INNER JOIN (VALUES ('Broker1'), ('Broker2'), ('Broker3'),('Broker4'),('Broker'),('Broker5')) Vals(val)
ON t1.column1 LIKE '%' + vals.val + '%'
Мне нужен вывод, чтобы он НЕ выбирал file_ID, где filename содержит строку «Renamed» для Broker1 и «интереса» для Broker2.
Также мне нужно выбрать последнюю версию.
Так что из вышесказанного нужен вывод на основе приведенных ниже комментариев:
filename File_ID date version Comment
Boker1_file_12312 4007 20180108 1 To be shown in output
Boker1_file_1sa3e_Renamed 5147 20180108 2 Not be shown in output
Boker2_file_d3223f 3496 20180108 1 Not be shown in output
Boker2_file_j3df 3880 20180108 2 To be shown in output
Boker2_file_dj3498_interest 5817 20180108 3 Not be shown in output
Boker3_file_fj934f 4541 20180108 1 Not be shown in output
Boker3_file_jdf34f 5818 20180108 2 Not be shown in output
Boker3_file_K9d043 4910 20180108 3 To be shown in output
Boker4_file_c34km 3101 20180108 1 Not be shown in output
Boker5_file_cf4k3 5209 20180108 1 Not be shown in output
Окончательный вывод:
val File_ID
Boker1 4007
Boker2 3880
Boker3 4910
Boker4 3101
Broker error1
Broker5 error2
Я пытаюсь добавить последнюю версию из следующего кода:
select file_id from table1 as t
where date = '20190108'
and filename like ('%Broker1%')
and t.version = (select max(version) from table1 as t2
where t2.date = t.date
and t2.filename like t.filename
)