2016-11-09 3 views
0

Ich bekomme einen Fehler mit meiner Unterabfrage und sehe nicht, was ich falsch mache. Die Unterabfrage funktioniert, wenn sie aktiviert ist. Da ist Where-In offensichtlich das Problem. Auch versucht EXISTS.SQL-Unterabfrage (Where In)

select [ID NUMBER], [PERNO], [TITLE], [INITIALS], [SURNAME], [DATE OF BIRTH] 
from dbo.[DATASEPT002] 
WHERE [ID NUMBER] IN 
(SELECT [ID NUMBER], COUNT([PERSALNO]) AS COUNTOF 
FROM [dbo].[DATASEPT] 
GROUP BY [ID NUMBER] HAVING COUNT([PERSALNO]) >1) 
+0

Die Unterabfrage gibt redundant COUNT ([PERSALNO]) '. –

+0

Ich habe vergessen hinzuzufügen. Ich habe auch versucht, nur die ID-Nummer aus der Unterabfrage auszuwählen, also ist die Unterabfrage nur ID-Nummern, aber das war auch nicht möglich. Thx für die Formatierung. – user4242750

+0

Bitte fügen Sie die *** tatsächliche Abfrage *** *** verwenden Sie mit dem *** tatsächlichen Fehler/Problem *** Sie begegnen. Wenn Sie zwei oder mehr Abfragen ausprobiert haben, geben Sie ihnen *** *** *** mit jeweils dem zugehörigen Fehler/Problem. – MatBailie

Antwort

1

Sie haben zwei Spalten in der Unterabfrage. diese mehr

select [ID NUMBER], [PERNO], [TITLE], [INITIALS], [SURNAME], [DATE OF BIRTH] 
from dbo.[DATASEPT002] t 
WHERE [ID NUMBER] IN (SELECT [ID NUMBER] 
         FROM [dbo].[DATASEPT] 
         GROUP BY [ID NUMBER] 
         HAVING COUNT([PERSALNO]) > 1 
        ); 

Allerdings würde ich Ausdruck typischerweise Funktionen Fenster: Es kann nur eine für den IN Vergleich verwendet werden

select t.* 
from (select t.*, count(*) over (partition by persalno) as cnt 
     from DATASEPT002 t 
    ) t 
where cnt > 1; 
+0

Es gibt 2 verschiedene Tabellen Gordon, so ist Ihr zweites Beispiel nicht korrekt –

+0

Die erste funktionierte. Danke – user4242750

+0

@ user4242750 - Dann ist der Kommentar zu Ihrem OP irreführend/falsch. Weil die einzige Änderung an Ihrer Abfrage ist, dass diese nur die ID-Nummer aus der Unterabfrage auswählt, über die Sie gesagt haben, aber das war auch nicht möglich. – MatBailie