Mam więc straszne zapytanie, że obecny istnieje w MS Access, który próbuję przepisać w SQL Server. Zasadniczo otrzymuję dane pochodzące z pliku tekstowego, który próbuję odfiltrować na podstawie określonych kryteriów.SQL gdzie klauzula z LIKE i IN
Moje problemy wiążą się ze sposobem, w jaki dane znajdują się w pliku tekstowym. Moja tabela jest podobna do tej:
Table1
BusinessDate DateTime
Amount money
User1 varchar
User2 varchar
User3 varchar
User4 varchar
... varchar
User16 varchar
Mam tabeli danych, który ma datę, a następnie ma 16 kolumn z danymi, który został dodany przez innego użytkownika. Istnieje kilka innych pól w tej tabeli, ale są one niepotrzebne na to pytanie.
Bieżąca kwerenda filtruje na 15 wartościach, gdzie identyfikator użytkownika jest podobny do czegoś.
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%'...)
Co próbuję zrobić, to przechowywać podobne wartości w tabeli, dzięki czemu mogę dołączyć do nich w moim zapytaniu. Nie znam wszystkich wartości, więc potrzebuję użyć symbolu wieloznacznego, ponieważ może to być dowolna kombinacja znaków alfanumerycznych. Więc mam tabeli jak poniżej:
ValueTable
AB%
CD%
EF%
HI%
...
Wtedy moja kwerenda byłoby coś podobnego do tego, ale nie sądzę, jest to możliwe
SELECT *
FROM Table1
WHERE User1 Like IN (SELECT Value FROM ValueTable)
OR User2 Like IN (SELECT Value FROM ValueTable)
Czy można zrobić coś takiego? Jeśli tak, to jakiej składni należy użyć, ponieważ jestem całkowicie zaskoczony.
Model danych jest źle. Czy możesz zmienić strukturę danych tak, aby każdy wiersz tabeli 1 zawierał dane dla pojedynczego użytkownika/kwoty/danych biznesowych? Powinieneś być w stanie stworzyć istniejącą strukturę za pomocą zapytania przestawnego, a filtrowanie będzie DUŻO łatwiejsze. –
@JimGarrison Zgadzam się, że filtrowanie w ten sposób byłoby o wiele łatwiejsze, ale restrukturyzacja danych byłaby trudna. Ten plik zawiera dużo więcej pól niż to, co pokazałem powyżej około 70 kolumn danych, co byłoby bardzo trudne. – Taryn
zrównoważenie sił zła z dobrym – swasheck