Quindi ho una query terribile che la corrente esiste in MS Access che sto cercando di riscrivere in SQL Server. Fondamentalmente ottengo dati che provengono da un file di testo che sto cercando di filtrare in base a criteri specifici.SQL Where Clausola con LIKE e IN
I miei problemi riguardano il modo in cui i dati si trovano nel file di testo. Il mio tavolo è simile a questo:
Table1
BusinessDate DateTime
Amount money
User1 varchar
User2 varchar
User3 varchar
User4 varchar
... varchar
User16 varchar
Ho una tabella di dati che ha la data e poi ha 16 colonne con dati che sono stati aggiunti da un utente diverso. Ci sono altri campi in questa tabella ma non sono necessari per questa domanda.
La query corrente esegue il filtraggio su 15 valori in cui ID utente è come qualcosa.
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%'...)
Quello che sto cercando di fare è di memorizzare i valori come in una tabella in modo che possano unirsi a loro nella mia interrogazione. Non conosco tutti i valori, quindi ho bisogno di usare il carattere jolly perché potrebbe essere una qualsiasi combinazione possibile di caratteri alfanumerici. Così avrò una tabella come questa:
ValueTable
AB%
CD%
EF%
HI%
...
Quindi la mia domanda sarebbe qualcosa di simile a questo, ma io non credo che questo sia possibile
SELECT *
FROM Table1
WHERE User1 Like IN (SELECT Value FROM ValueTable)
OR User2 Like IN (SELECT Value FROM ValueTable)
E 'possibile fare qualcosa del genere? Se è così, quale sintassi dovrebbe essere usata perché sono totalmente perplesso.
Il modello di dati è sbagliato. Riesci a ristrutturare i dati in modo che ogni riga di Table1 contenga dati per un singolo utente/importo/businessDate? Dovresti essere in grado di creare la struttura esistente utilizzando una query pivot e il filtraggio sarà MOLTO più semplice. –
@JimGarrison Sono d'accordo che sarebbe molto più facile filtrare in questo modo, ma la ristrutturazione dei dati sarebbe difficile. Questo file ha molti più campi di quello che ho mostrato sopra circa 70 colonne di dati sarebbe molto difficile. – Taryn
bilanciare le forze del male con il buono – swasheck