[英]How to use IF Statement or Case when in Where Clause SQL
請幫助,如何在Where
子句中插入If
或Case
這是我的代碼的一部分,我收到錯誤,但是我插入If
或Case When
。
這是錯誤消息156,級別15,狀態1,過程p5,第35行
關鍵字“ BETWEEN”附近的語法不正確
AS
WITH
t1 AS (SELECT 0 n UNION ALL SELECT 0 n UNION ALL SELECT 0 UNION ALL SELECT 0)
,Calendario AS (SELECT DATEADD(day, (ROW_NUMBER() OVER (ORDER BY a.n)), @CheckIn) AS Fetcha
FROM t1 a, t1 b, t1 c, t1 d, t1 e, t1 f)
SELECT @noches= convert(int,@Checkout - @CheckIn), @Sum = SUM(dbl*@canthabdbl),@SumSGL = SUM(SGL*@canthabsgl), @SumTPL = SUM(isnull(Triple,0)*@canthabtpl),@SumCUAD = SUM(isnull(Cuad,0)*@canthabcdpl),@SumChd = SUM(isnull(Chd,0)*@cantchd), @totalhab = (@Sum+@SumSGL+@SumTPL+@SumCUAD+@SumChd), @average = (@totalhab/@noches)
FROM hotelsnew
JOIN Calendario ON
Calendario.Fetcha BETWEEN Desde AND Hasta+1
WHERE
CASE WHEN @checkout>hasta THEN
Calendario.Fetcha BETWEEN @CheckIn+1 AND @CheckOut-1
AND Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan
ELSE
Calendario.Fetcha BETWEEN @CheckIn AND @CheckOut
AND Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan
END
RETURN
未經測試的猜測。 看看是否可行。
WHERE
(
@checkout>hasta AND
Calendario.Fetcha BETWEEN @CheckIn+1 AND @CheckOut-1 AND
Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan
) OR
(
@checkout <= hasta AND
Calendario.Fetcha BETWEEN @CheckIn AND @CheckOut AND
Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan
)
嘗試這個:
WHERE Calendario.Fetcha BETWEEN
CASE WHEN @checkout>hasta THEN @CheckIn+1 ELSE @CheckIn END
AND
CASE WHEN @checkout>hasta THEN @CheckOut-1 ELSE @CheckOut END
AND Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan
CASE語句通常位於選擇部分,如下所示:
SELECT
CASE ContactType WHEN 'Person' THEN LastName ELSE BusinessName END
FROM Contacts
對於您的WHERE子句,我建議將其重寫為如下形式:
WHERE
(@checkout>hasta AND Calendario.Fetcha BETWEEN @CheckIn+1 AND @CheckOut-1
AND Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan)
OR
(@checkout<=hasta AND Calendario.Fetcha BETWEEN @CheckIn AND @CheckOut
AND Hoteles = @IDHotel AND tipohabitacion = @IDTipo AND Id_plan = @IDPlan)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.