SQLServerクエリを発行しました。このコードを実行すると、エラーが発生します。
サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。
私は多くの方法を試しましたが、それでもエラーが発生します-どうすれば解決できますか?
SQLServerクエリを発行しました。このコードを実行すると、エラーが発生します。
サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。
私は多くの方法を試しましたが、それでもエラーが発生します-どうすれば解決できますか?
エラーは非常に簡単です。サブクエリは複数の行を返します。クエリの仕組みにより、これは許可されていません。句内のものは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'