1

SQLServerクエリを発行しました。このコードを実行すると、エラーが発生します。

サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。

私は多くの方法を試しましたが、それでもエラーが発生します-どうすれば解決できますか?

4

1 に答える 1

4

エラーは非常に簡単です。サブクエリは複数の行を返します。クエリの仕組みにより、これは許可されていません。句内のものはSELECT複数の行を定義できません。これはFROM句内にある必要があります。

これを解決するには多くの方法がありますが、そのうちのいくつかは次のとおりです。

SELECT (SELECT MAX(field) ...)
SELECT (SELECT field ... GROUP BY field)
SELECT (SELECT TOP 1 field ...)

問題は、上記のすべて(動作しない可能性のある の例外を除くGROUP BY)が不要なデータを返す可能性非常に高いことです。元のクエリの各行に対して 1 行のみです。

を使用XML PATHして、これらすべての値を単一のセルに連結することができます。

または、複数の行にJOIN満足している場合は、代わりに使用します:

SELECT someAlias.field
...
JOIN table as someAlias ON someAlias.somefield = someothertable.someotherfield

次のように:

SELECT A.MR_EMPLOYEE_CHECKROLL_TYPE_ID
FROM   T_PR_CHECKROLL_WISE_LOG
       JOIN T_TR_CLOSING
         ON T_TR_CLOSING.CLOSING_ID = T_PR_CHECKROLL_WISE_LOG.CLOSING_ID
       JOIN T_PR_EMPLOYEE_LOG
         ON T_PR_EMPLOYEE_LOG.CLOSING_ID = T_TR_CLOSING.CLOSING_ID
       JOIN T_PR_EMPLOYEE_LOG AS A
         ON A.EMP_ID = T_PR_CHECKROLL_WISE_LOG.EMP_ID
WHERE  T_PR_CHECKROLL_WISE_LOG.CLOSING_ID = '1'
于 2013-02-25T12:20:47.250 に答える