Prima che qualcuno faccia un rant che questa tabella debba essere normalizzata, best practice, ecc. Ammetto che si tratta di una vecchia tabella che abbiamo in SQL Server 2008 R2 e Non posso fare nulla per cambiarlo. Detto questo, questa tabella ha le seguenti colonne:Ricerca di valori duplicati in colonne diverse nella stessa riga
"PreparedBy", "PrelimApprovalBy", "Approval1Signer", "Approval2Signer"
Tutti questi campi hanno nomi utente o NULL o "". Voglio ottenere tutte le righe in cui lo stesso nome utente appare in 2 o più dei campi sopra menzionati. Se 2 campi sono NULL sono NON una corrispondenza e sono NON una corrispondenza se sono entrambi ''. Quindi sia NULL che '' devono essere esclusi in quanto non significano nulla.
Ecco quello che ho pensato di finora, ma non sono gradire:
Sto pensando di controllare tutte le permutazioni nella clausola WHERE (controllando per NULL e '') facendo qualcosa lungo le linee di
WHERE PreparedBy = PrelimApprovalBy OR PreparedBy = Approval1Signer OR ...
Ci deve essere un modo migliore per farlo.
È fantastico! Funziona! Mai visto questa sintassi prima ... FROM (VALUES ... AS X (n)). Ho imparato qualcosa di nuovo oggi! – Denis
Felice di aiutare e di presentare una nuova sintassi. Più strumenti nella cintura degli attrezzi non possono ferire. Inoltre, questa soluzione può facilmente gestire più colonne, mentre l'altro metodo esploderà in dimensioni e complessità molto presto. – GilM
+1 sembra pulito. funziona su qualsiasi server sql? –