Tôi đang cố gắng làm cho mã bên dưới hoạt động, riêng hai đoạn mã (trong phần WHEN
và công việc ELSE
) nhưng được sử dụng trong CASE
này tuyên bố Tôi gặp lỗiSQL, cú pháp không chính xác trên báo cáo CASE gần từ khóa 'FROM'
"Cú pháp không đúng gần 'CAST', được mong đợi 'AS'." lỗi.
Về cơ bản nếu mã WHEN
báo cáo là bằng hoặc lớn hơn 24 thì sử dụng câu lệnh THEN
nếu nó là dưới 24 sau đó sử dụng câu lệnh ELSE
.
Tôi dường như không thể làm việc này sau khi thử vài giờ bất kỳ dấu hiệu nào về việc tôi sẽ sai ở đâu sẽ được đánh giá cao.
SELECT CASE
WHEN
(convert(float,datediff(mi, start_work, end_work))/60) >= '24'
THEN
(convert(float,datediff(mi, start_work, end_work))/60)
ELSE
(CAST(convert(varchar(2), dateadd(minute, datediff(minute, start_time, end_time), 0), 114)
* 60 + RIGHT (convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114),
CASE WHEN CHARINDEX(':',convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114)) > 0
THEN LEN(convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114))-3
ELSE LEN(convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114))
END) AS decimal)/60
FROM NDB.dbo.statusa
INNER JOIN NDB.dbo.details ON statusa.vkey = details.vkey
INNER JOIN NDB.dbo.chegu ON statusa.ckey = NDB.dbo.chegu.gkey
WHERE start_time!= end_time AND string1 = Visit_Id and NDB.dbo.chegu.name = 'loft'
AS [Working]
(chuyển đổi (float, dateiff (mi, start_work, end_work))/60)> = '24' không nên có dấu ngoặc kép khoảng 24. –