IF (
SELECT
Employees.AnnualDayHollidayAllowance - Employees.TotalHolidaysDaysTaken
AS HolidaysRemaining
FROM Employees) <= 0
BEGIN
PRINT 'You have not got enough holidays'
END
Else
INSERT INTO RequestedHolidays (Reason,StartDate,EndDate,EmployeeID)
VALUES (@Reason,@StartDates,@EndDates,@EmployeeID);
任何人都可以帮我解决这个因为这个而收到的错误消息^,我不确定自己是什么意思
子查询返回的值超过1。当子查询遵循=,!=,&lt;,&lt; =,&gt;,&gt; =或子查询用作表达式时,不允许这样做。
答案 0 :(得分:3)
信息很清楚。 if中的子查询返回多行。也许这就是你想要的:
IF (SELECT sum(Employees.AnnualDayHolidayAllowance - Employees.TotalHolidaysDaysTaken )
FROM Employees) <= 0
或:
IF (SELECT sum(Employees.AnnualDayHolidayAllowance - Employees.TotalHolidaysDaysTaken )
FROM Employees
WHERE employeeid = @employeeıd
) <= 0
答案 1 :(得分:1)
在第一个SQL中,您从WHOLE表Employees
中选择行
我想你只需要当前的员工吗?:
IF (
SELECT
SUM(Employees.AnnualDayHollidayAllowance
- Employees.TotalHolidaysDaysTaken)
AS HolidaysRemaining
FROM Employees
WHERE ID = @EmployeeID) <= 0
BEGIN
PRINT 'You have not got enough holidays'
END
Else
INSERT INTO RequestedHolidays (Reason,StartDate,EndDate,EmployeeID)
VALUES (@Reason,@StartDates,@EndDates,@EmployeeID);
答案 2 :(得分:1)
查询
SELECT
Employees.AnnualDayHollidayAllowance - Employees.TotalHolidaysDaysTaken
AS HolidaysRemaining
FROM Employees
返回几个记录,例如
10
11
12
它不是一个数字,因此它可以比较它。您应该以只返回1条记录的方式更改查询。类似的东西:
SELECT Top (1)
Employees.AnnualDayHollidayAllowance - Employees.TotalHolidaysDaysTaken
AS HolidaysRemaining
FROM Employees