[英]What's wrong with this SQL query?
SELECT [travel], [fro_m], [t_o], [dep], [arr], [fare], [discount], [faresleeper],
[rating], [seats], [s_no],
[booking_closed] =
CASE WHEN s1from <= @date AND s1to >= @date THEN s1Rate ELSE fare END
WHEN s2from <= @date AND s2to >= @date THEN s2Rate ELSE fare END
WHEN s3rate <= @date AND s3to >= @date THEN s3Rate ELSE fare END
FROM a1_volvo WHERE (fro_m = @fro_m) AND (t_o = @t_o)
case语句不正确:
CASE WHEN s1from <= @date AND s1to >= @date THEN s1Rate
WHEN s2from <= @date AND s2to >= @date THEN s2Rate
WHEN s3rate <= @date AND s3to >= @date THEN s3Rate
else fare END
在case语句的每一行之后都有and else语句。 它应该只在最后。
CASE WHEN s1from <= @date AND s1to >= @date THEN s1Rate
WHEN s2from <= @date AND s2to >= @date THEN s2Rate
WHEN s3rate <= @date AND s3to >= @date THEN s3Rate
ELSE fare
END
更好?
这和他的代码一样,但是在和之间使用。 他们使用它的好处是,它的可读性更好。 在进行代码审查时,您会花费无休止的时间比较两个名称是否键入相同
CASE WHEN @date between s1from AND s1to THEN s1Rate
WHEN @date between s2from AND s2to THEN s2Rate
WHEN @date between s3rate AND s3to THEN s3Rate
ELSE fare
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.