サブクエリがEXISTSで導入されていない場合、選択リストに指定できる式は1つだけです。質問する

サブクエリがEXISTSで導入されていない場合、選択リストに指定できる式は1つだけです。質問する

私のクエリは次の通りで、その中にサブクエリが含まれています。

 select count(distinct dNum)
 from myDB.dbo.AQ
 where A_ID in 
  (SELECT DISTINCT TOP (0.1) PERCENT A_ID, 
            COUNT(DISTINCT dNum) AS ud 
 FROM         myDB.dbo.AQ
 WHERE     M > 1 and B = 0 
 GROUP BY A_ID ORDER BY ud DESC)

受け取ったエラーは...

サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。

サブクエリを単独で実行すると、問題なく結果が返されるので、メインクエリに何らかの問題があると考えられます。

ベストアンサー1

句で比較を行うためにサブクエリで 2 つ (または複数) の列を返すことはできません。WHERE A_ID IN (subquery)どの列と比較するのでしょうかA_ID。サブクエリは、句の反対側の列との比較に必要な 1 つの列のみを返す必要がありますIN。したがって、クエリは次の形式にする必要があります。

SELECT * From ThisTable WHERE ThisColumn IN (SELECT ThatColumn FROM ThatTable)

また、上位の行からのみ選択できるように並べ替えを追加する必要がありますが、並べ替えを行うために COUNT を列として返す必要はありません。ORDER句内の並べ替えは、クエリによって返される列とは無関係です。

次のようなことを試してください:

select count(distinct dNum) 
from myDB.dbo.AQ 
where A_ID in
    (SELECT DISTINCT TOP (0.1) PERCENT A_ID
    FROM myDB.dbo.AQ 
    WHERE M > 1 and B = 0
    GROUP BY A_ID 
    ORDER BY COUNT(DISTINCT dNum) DESC)

おすすめ記事