SQL-запрос, сравнивающий десятичные значения, которые не совпадают, и возвращает значения NULL - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть SQL-запрос, и между полями, к которым он обращается, есть проверка, которая сравнивает поле с именем «tipo» и в зависимости от него будет присваивать значению полю «dias_validez», проблема в том, что case равен десятичному числу типа « 0,7 "или" 1,5 ", проверка не работает и возвращает значения NULL

SELECT
    Usuario.`id_usuario`,
    Usuario.`nombre_usuario`,
    Usuario.`groupon`,
    Groupon.`tipo`,
    DATEDIFF(NOW(), Facturacion.`fecha_inicio`) AS dias_pasados,
    Perfil.`comoseentero`,

    CASE 
    WHEN Groupon.`tipo` = 1 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=24 THEN 0
    WHEN Groupon.`tipo` = 1 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >24 AND  DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=30 THEN 1
    WHEN Groupon.`tipo` = 1 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >30 THEN 2
    WHEN Groupon.`tipo` = 2 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=54 THEN 0
    WHEN Groupon.`tipo` = 2 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >54 AND  DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=54 THEN 1
    WHEN Groupon.`tipo` = 2 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >60 THEN 2
    WHEN Groupon.`tipo` = 3 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=84 THEN 0
    WHEN Groupon.`tipo` = 3 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >84 AND  DATEDIFF(NOW(), Facturacion.`fecha_inicio`) <=94 THEN 1
    WHEN Groupon.`tipo` = 3 AND DATEDIFF(NOW(), Facturacion.`fecha_inicio`) >90 THEN 2
    END AS resultado,

    CASE
    WHEN Groupon.`tipo` = 1 THEN 30
    WHEN Groupon.`tipo` = 2 THEN 60
    WHEN Groupon.`tipo` = 3 THEN 90
    WHEN Groupon.`tipo` = 0.7 THEN 21
    WHEN Groupon.`tipo` = 1.2 THEN 35
    WHEN Groupon.`tipo` = 1.5 THEN 45
    WHEN Groupon.`tipo` = 12 THEN 365
    WHEN Groupon.`tipo` = 0 THEN 'N/A'
    END AS dias_validez
    FROM
    Usuario
    JOIN Groupon
    ON Usuario.`groupon` = Groupon.`groupon`
    JOIN Facturacion
    ON Facturacion.`id_proceso` = Usuario.`id_usuario`
    JOIN Perfil
    ON Usuario.`id_usuario` = Perfil.`id_proceso_perfil` GROUP BY Usuario.id_usuario ORDER BY resultado;

Спасибо за ваши комментарии. Извините пожалуйста за мои знания английского языка! С наилучшими пожеланиями

1 Ответ

0 голосов
/ 08 сентября 2018

Решение было очень простым

WHEN CAST(Groupon.`tipo` AS DECIMAL(10,3)) = 0.7 THEN 21

Просто приведите число с плавающей запятой к десятичной и запрос будет выполняться хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...