2016-04-15 1 views
0

Ich versuche, eine einfache Anweisung in meine WHERE-Klausel zu schreiben, aber ich glaube nicht, dass ich die Syntax richtig habe. Die Abfrage sucht, ob diese IDs in dieser Spalte sind, aber ich bin nicht sicher, ob ich IN zweimal in derselben Zeile verwenden kann? Könnte jemand bitte etwas Feedback geben. Vielen Dank!Verwenden von [WHERE, IN, LEN, IN] TSQL

WHERE... AND (tableA.ColumnA in LEN(LTRIM(RTRIM(TableB.ColumnB))) in (5,7)) 

Ich erhalte einige Syntaxfehler in der Nähe der zweiten IN und kann nicht herausfinden, ob dies der richtige Weg, dies zu nähern ist?

+0

verbinden Was ist der Zweck der 'LEN (LTRIM (RTRIM (TableB.ColumnB)))'? Und welche Spalte meinen Sie, wenn Sie sagen "ob diese IDs in dieser Spalte sind"? –

+0

Ich trimme Leerzeichen für beide Spalten. Ich habe IDs in Spalte A, die in Spalte B sind. Der Punkt dieser Where-Klausel ist also, dass wenn ein Benutzer den Hauptparameter Person auswählt, die Abfrage in meiner Finanztabelle nachschaut und alle IDs (die dieser Person zugeordnet sind) zieht sind auch in der Hauptgeschäftstabelle. Im Wesentlichen 'tableA.columnA in tableb.columnB'. Aber ich möchte nur 5 Zeichen und 7 Zeichen IDs. Hilft das klären? – Geo

Antwort

2

Wenn Sie mit einer Spalte verwenden, IN, muss es sich um eine Unterauswahl sein, aber hier ist eine richtige Art und Weise Sie es tun können (Wes 'Unter wählen hat immer noch die gleiche Syntax-Fehler):

WHERE... AND (tableA.ColumnA in (
SELECT ColumnB FROM TableB WHERE LEN(LTRIM(RTRIM(TableB.ColumnB))) in (5,7) 
)) 
+0

Oh ja ich natürlich bin heute ein wenig erschüttert. –

1

Verwenden Sie stattdessen eine Unterabfrage.

WHERE... AND (SELECT TA.ColumnA 
       FROM TableA TA 
       WHERE TA.ColumnA IN LEN(LTRIM(RTRIM(TABLEB.ColumnB))) IN (5,7) 
+0

Ich habe das versucht, aber ich glaube, ich habe den gleichen Fehler erhalten. Hier ist, was mein Code mit einem Fehler beim zweiten 'in' aussieht. "Falsche Syntax nahe‚in":/ ' UND \t \t \t (mainfilters.RPCO IN (LEN (LTRIM (RTRIM (ABC6.CU))) IN (5,7))) ' – Geo

0

mit

join TableB 
    on TableB.ColumnB = tableA.ColumnA 
    and LEN(LTRIM(RTRIM(TableB.ColumnB))) in (5,7)