Итак, у меня есть ужасный запрос, который существует в MS Access, который я пытаюсь переписать в SQL Server. В основном я получаю данные, которые поступают из текстового файла, который я пытаюсь отфильтровать, исходя из определенных критериев.SQL Where Clause с LIKE и IN
Мои проблемы возникают с тем, как данные находятся в текстовом файле. Моя таблица похожа на это:
Table1
BusinessDate DateTime
Amount money
User1 varchar
User2 varchar
User3 varchar
User4 varchar
... varchar
User16 varchar
У меня есть таблица данных, которая имеет дату, а затем имеет 16 столбцов с данными, которые были добавлены другим пользователем. В этой таблице есть и другие поля, но они не нужны для этого вопроса.
Текущий запрос выполняет фильтрацию по 15 значениям, где userId - это что-то.
SELECT *
FROM Table1
WHERE (User1 Like 'AB%' Or User1 Like 'CD%' Or User1 Like 'EF%'...)
OR (User2 Like 'AB%' Or User2 Like 'CD%' Or User2 Like 'EF%'...)
То, что я пытаюсь сделать, это сохранить подобные значения в таблице, чтобы я мог присоединиться к ним в моем запросе. Я не знаю всех значений, поэтому мне нужно использовать подстановочный знак, потому что это может быть любая возможная комбинация буквенно-цифровых символов. Так что я буду иметь таблицу, как это:
ValueTable
AB%
CD%
EF%
HI%
...
Тогда мой запрос будет что-то похожее на это, но я не думаю, что это возможно
SELECT *
FROM Table1
WHERE User1 Like IN (SELECT Value FROM ValueTable)
OR User2 Like IN (SELECT Value FROM ValueTable)
Можно ли сделать что-то вроде этого? Если да, то какой синтаксис следует использовать, потому что я полностью в тупике.
модель данных является неправильным. Можете ли вы реструктурировать данные, чтобы каждая строка Table1 содержала данные для одного пользователя/суммы/businessDate? Вы должны иметь возможность создать существующую структуру с помощью сводного запроса, и фильтрация будет намного проще. –
@JimGarrison Я согласен, что было бы намного проще фильтровать этот путь, но реструктурировать данные было бы сложно. В этом файле больше полей, чем показано выше, около 70 столбцов данных было бы очень сложно. – Taryn
баланс сил зла с хорошим – swasheck