Неправильный синтаксис ЖЕНИЛ TSQL в SQL server 2014

Моя проблема - следующая: Я должен делать рукописный шрифт в TSQL что способствовал тому, чтобы, если числа - несовершеннолетние 50 дебет делать корень суммы Ваших квадратов, если он равен 50, погрузились Ваши квадраты, и если он больше, чем 50 разделенный первого между продуктом двух первых.

Я реализовал этот рукописный шрифт:

/*Condición si la suma es menor de 50 hacer raíz cuadrada de los cuadrados, si */
DECLARE
    @num smallint;
    SET @num = 30;
DECLARE 
    @num2 smallint;
    SET @num2 = 10;
DECLARE
    @num3 smallint;
    SET @num3 = 10;
DECLARE 
    @raiz decimal (4,3);
DECLARE
    @suma int;
DECLARE
    @cuadrado int;
DECLARE
    @div float;
BEGIN
    SET @suma = @num+@num2+@num3;
    IF (@suma < 50)
        BEGIN
            SET @raiz = sqrt(@num^2+@num2^2+@num3^2);
            print @raiz;
        END
    IF (@suma = 50)
        BEGIN
            SET @cuadrado = @num^2+@num2^2+@num3^2;
            print @cuadrado;
        END
    IF (@suma > 50)
        BEGIN
            SET @div = @num/(@num2*@num3);
            print @div;
        END
END

Он не дает ошибку, но не функционирует хорошо, когда число равно 50, ни, когда больше, так что я считал выражение case :

DECLARE
    @num smallint;
    SET @num = 30;
DECLARE 
    @num2 smallint;
    SET @num2 = 10;
DECLARE
    @num3 smallint;
    SET @num3 = 10;
DECLARE 
    @raiz decimal (4,3);
DECLARE
    @suma int;
DECLARE
    @cuadrado int;
DECLARE
    @div float;
SET @suma = @num+@num2+@num3;

CASE
    WHEN(@suma < 50)
        THEN
            SET @raiz = sqrt(@num^2+@num2^2+@num3^2);
            print @raiz;

    WHEN (@suma = 50)
        THEN
            SET @cuadrado = @num^2+@num2^2+@num3^2;
            print @cuadrado;

    ELSE (@suma > 50)
        THEN
            SET @div = @num/(@num2*@num3);
            print @div;
END
1
задан 11.01.2017, 23:45
0 ответов

Сначала, что совсем, выражение CASE это не цикл, это просто выражение, которое вручает результат.

То, в чем ты нуждаешься, достаточно простое:

DECLARE @num smallint, @num2 smallint, @num3 smallint;

SET @num = 30;
SET @num2 = 10;
SET @num3 = 10;

DECLARE @suma int;
SET @suma = @num+@num2+@num3;

SELECT  CASE 
            WHEN @suma < 50 THEN sqrt(@num^2+@num2^2+@num3^2)
            WHEN @suma = 50 THEN @num^2+@num2^2+@num3^2
            WHEN @suma > 50 THEN CAST(@num as float)/(@num2*@num3)
        END
4
ответ дан 03.12.2019, 17:44
  • 1
    Спасибо, это была неудача достаточно важной концепции –  12.01.2017, 00:54