2016-11-09 8 views
0

私のサブクエリでエラーが発生し、私が間違っていることが分かりません。サブクエリはその上で動作します。 Where-Inは明らかに何が問題なのですか? EXISTSも試しました。SQLサブクエリ(Where)

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

サブクエリが重複 'COUNT([PERSALNO])を返します。 –

+0

私は追加するのを忘れました。私はまた、サブクエリからID番号を選択しようとしました。サブクエリはID番号だけですが、それもできませんでした。フォーマットのためのThx。 – user4242750

+0

***実際のクエリ***を使用してください。***実際のエラー/問題***で使用してください。 2つ以上のクエリを試した場合は、それぞれに関連するエラー/問題がある*** ***を指定します。 – MatBailie

答えて

1

サブクエリには2つの列があります。一方のみがIN比較のために使用することができる。

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 
        ); 

ただし、Iは式これは、より一般的に窓関数を用いてなる:

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

2つの異なるテーブルGordonがあるので、2番目の例は正しくありません –

+0

最初のものがうまくいきました。 – user4242750

+0

@ user4242750ありがとうございます - OPのコメントは誤解を招く/間違っています。あなたのクエリの唯一の変更は、これが 'サブクエリからID番号を選択するだけです.'ということです。 – MatBailie