2

ClientIDgroup by 句と having 句を使用して次のサブクエリから を取得しようとしていますが、次のエラーが発生します。

メッセージ 116、レベル 16、状態 1、行 1
サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。

クエリ:

select 
    ClientID 
from 
    SurveyResponses 
where 
     ClientID in (select ClientID, count (surveyresponseid) 
                  from SurveyResponses
                  where SurveyID in (1988,1989,2750,3206,15561) 
group by 
     ClientID
having count (SurveyResponseID) > 1) and SurveyID = 1989
4

5 に答える 5

0

他のすべての回答は正常に機能します。次のEXISTS構文を使用することもできます。

SELECT clientID
FROM SurveyResponses
WHERE EXISTS (
         SELECT * 
         FROM SurveyResponses SR 
         WHERE SR.SurveyId IN (1988, 1989, 2759, 3206, 15561) 
               AND SR.ClientId = ClientID)
GROUP BY ClientID
HAVING COUNT(SurveyResponseID) > 1 AND SurveyID = 1989
于 2013-09-17T15:47:51.590 に答える
0

サブクエリで 2 つの列をプルしていますが、プルできるのは 1 つだけです。これは、SQL にクライアント ID が調査回答数のどこに存在するかを確認し、SurveyResponses テーブルの clientIDs を確認するためです。

これを試してみてください、それはテストされていません

select ClientID from SurveyResponses 
where ClientID in (select ClientID  from SurveyResponses
where SurveyID in (1988,1989,2750,3206,15561) 
group by ClientID
having count (SurveyResponseID) > 1) and SurveyID = 1989
于 2013-09-17T15:26:52.510 に答える
0
select 
    ClientID 
from 
    SurveyResponses 
where 
     ClientID in (select ClientID,  
                  from SurveyResponses
                  where SurveyID in (1988,1989,2750,3206,15561) 
group by 
     ClientID
having count (SurveyResponseID) > 1) and SurveyID = 1989

複数のフィールドを選択しているため、このサブクエリは有効ではありませんClientID, count (surveyresponseid)subqueryforWhere In条件で複数のフィールドを処理する場合は、これを試してください。複数列の処理

于 2013-09-17T15:29:35.697 に答える
0

あなたはこのように試すことができます: -

select ClientID from SurveyResponses where ClientID in
(select ClientID from SurveyResponses
where SurveyID in (1988,1989,2750,3206,15561) 
group by ClientID
having count (SurveyResponseID) > 1) and SurveyID = 1989
于 2013-09-17T15:27:22.213 に答える
-1

select 句からcount()を削除します

   select ClientID from SurveyResponses where ClientID in
    (select ClientID from SurveyResponses
    where SurveyID in (1988,1989,2750,3206,15561) 
    group by ClientID
    having count (SurveyResponseID) > 1) and SurveyID = 1989
于 2013-09-17T15:26:48.570 に答える