Wenn ich die folgende Abfrage ausführen:Dies ist nicht zulässig, wenn die Unterabfrage folgt =, = <, <= , >,> =, wenn ich subquery
SELECT
CASE
WHEN AT_EMPSCHEDULE.START1 <> '01/01/1900'
AND AT_EMPSCHEDULE.START2 <> '01/01/1900'
AND AT_EMPSCHEDULE.END2 <> '01/01/1900'
AND AT_EMPSCHEDULE.LEAVECODE =''
AND NOT EXISTS(SELECT PDATE
FROM HR_PUBHOLIDAY
WHERE PDATE=AT_EMPSCHEDULE.TRANDATE)
AND DATEPART(WEEKDAY,AT_EMPSCHEDULE.TRANDATE) <> 1
THEN
CAST((SELECT HIS_GENSALARYD.BASESALARY/HIS_GENSALARYD.WORKDAY
FROM HIS_GENSALARYD
WHERE (AT_EMPSCHEDULE.TRANDATE BETWEEN HIS_GENSALARYD.PAYFROM
AND HIS_GENSALARYD.PAYTO
AND HIS_GENSALARYD.EMPCODE = AT_EMPSCHEDULE.EMPCODE)) AS DECIMAL(10, 2))
ELSE 0
END AS DAILYSALARY
FROM
HIS_GENSALARY
INNER JOIN
AT_EMPSCHEDULE ON HIS_GENSALARY.EMPCODE = AT_EMPSCHEDULE.EMPCODE
AND MONTH(TRANDATE) = HIS_GENSALARY.INMONTH
AND YEAR(TRANDATE) = HIS_GENSALARY.INYEAR
WHERE
HIS_GENSALARY.EMPCODE = HIS_GENSALARY.EMPCODE
ich die Meldung:
Subquery hat mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage folgt =,! =, <, < =,>,> = oder wenn die Unterabfrage als Ausdruck verwendet wird.
In dem Kontext, in dem es verwendet wird, kann die Unterabfrage höchstens eine Zeile zurückgeben. SQL Server erwartet einen Skalarwert. Ein einzelner Wert. Keine Ergebnismenge. Das beobachtete Verhalten wird erwartet und entspricht dem dokumentierten Verhalten. Gab es eine * Frage *? Vielleicht möchten Sie einen einzelnen Wert zurückgeben, indem Sie beispielsweise eine Aggregatfunktion wie AVG verwenden? Wir raten nur. – spencer7593