我正在努力解決這個 else 功能。
我一直在第 41 行收到此錯誤訊息:
訊息 156,級別 15,狀態 1,第 41 行
關鍵字“ELSE”附近的語法不正確
我知道其他人已經問過類似的問題。除了在這種情況下(如果我錯了,請糾正我),我被告知某些 IF 陳述句仍然可以在沒有 ELSE 陳述句的情況下運行。最后一個 ELSE 陳述句應該是第一個條件不為真的結果。
這是我的代碼:
USE PR;
DECLARE @TotHours decimal;
DECLARE @TotEmps int;
DECLARE @HolHours decimal;
DECLARE @RegHours decimal;
DECLARE @OTHours time;
SELECT @TotHours = SUM(WorkHours)
FROM Hours
WHERE PPID IN (SELECT MAX(PPID) FROM PayPeriod);
SELECT @TotEmps = COUNT(EmpID) FROM EmpData;
SELECT @HolHours = SUM(HolHours)
FROM Hours
WHERE PPID IN (SELECT MAX(PPID) FROM PayPeriod);
SET @RegHours = @TotEmps * 32;
IF @OTHours = @HolHours
BEGIN
SELECT *
FROM Hours
WHERE @OTHours > 0;
END;
IF @RegHours > @TotHours
BEGIN
SELECT *
FROM Hours
WHERE @OTHours = @HolHours AND @RegHours = @TotEmps * 32;
PRINT 'Total regular hours for the week: ' CONVERT(varchar, @RegHours, 1);
PRINT 'Total holiday hours for the week: ' CONVERT(varchar, @HolHours, 1);
PRINT 'Total OT Hours for the week: ' CONVERT(varchar, @OTHours, 1);
END;
ELSE
BEGIN
SELECT @TOtHours - MAX(@RegHours) AS OTHours
FROM Hours;
PRINT 'Total regular hours for the week: ' CONVERT(varchar, @RegHours, 1);
PRINT 'Total holiday hours for the week: ' CONVERT(varchar, @HolHours, 1);
PRINT 'Total OT Hours for the week: ' CONVERT(varchar, @OTHours, 1);
END;
ELSE
PRINT 'This week had no holiday pay.';
uj5u.com熱心網友回復:
你的第一個END是在錯誤的地方。
你要
USE PR;
DECLARE @TotHours decimal;
DECLARE @TotEmps int;
DECLARE @HolHours decimal;
DECLARE @RegHours decimal;
DECLARE @OTHours time;
SELECT @TotHours = SUM(WorkHours)
FROM Hours
WHERE PPID IN (SELECT MAX(PPID) FROM PayPeriod);
SELECT @TotEmps = COUNT(EmpID) FROM EmpData;
SELECT @HolHours = SUM(HolHours)
FROM Hours
WHERE PPID IN (SELECT MAX(PPID) FROM PayPeriod);
SET @RegHours = @TotEmps * 32;
IF @OTHours = @HolHours
BEGIN
SELECT *
FROM Hours
WHERE @OTHours > 0;
--not here
IF @RegHours > @TotHours
BEGIN
SELECT *
FROM Hours
WHERE @OTHours = @HolHours AND @RegHours = @TotEmps * 32;
PRINT 'Total regular hours for the week: ' CONVERT(varchar, @RegHours, 1);
PRINT 'Total holiday hours for the week: ' CONVERT(varchar, @HolHours, 1);
PRINT 'Total OT Hours for the week: ' CONVERT(varchar, @OTHours, 1);
END;
ELSE
BEGIN
SELECT @TOtHours - MAX(@RegHours) AS OTHours
FROM Hours;
PRINT 'Total regular hours for the week: ' CONVERT(varchar, @RegHours, 1);
PRINT 'Total holiday hours for the week: ' CONVERT(varchar, @HolHours, 1);
PRINT 'Total OT Hours for the week: ' CONVERT(varchar, @OTHours, 1);
END;
END;-- HERE
ELSE
PRINT 'This week had no holiday pay.';
良好的代碼格式有助于發現此類錯誤
uj5u.com熱心網友回復:
IF ELSE END 陳述句中的問題您沒有正確應用 IF ELSE 條件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/346148.html
標籤:sql sql-server sql-server-2012
下一篇:可以創建一個回傳多列的函式嗎?
