Что не так с этим запросом mySQL? (Конкат и приведение)

0

Следующий mySQL-запрос всегда возвращает 0 результатов. Проблема началась, когда я добавил часть, использующую функции concat и cast. Вы видите синтаксическую ошибку?

SELECT p.seccio_id as seccio, 
       count(distinct r.usuari_upc) as usuaris, 
       sum(r.preu) as preu
FROM report r, persona p 
WHERE r.usuari_upc = p.persona_id  
       and ((r.any = 2017 and r.mes = 1) 
            or (r.any > 2017 and r.any < 2018) 
            or (r.any = 2018 and r.mes = 1) 
            or (2017 != 2018  
                and ((r.any = 2017 and r.mes > 1)  
                or (r.any = 2018 and r.mes < 1))))  
       and (p.any_id = '2017-2018' 
           or p.any_id = '2016-2017') 
       /* The problem is here. */
       and ((r.mes < 9 
            and p.any_id = CONCAT(CAST(r.any - 1 as varchar(4)),"-",CAST(r.any as varchar(4)))) 
            or (r.mes >= 9 and p.any_id = CONCAT(CAST(r.any as varchar(4)),"-",CAST(r.any + 1 as varchar(4))))) 
GROUP BY p.seccio_id 
ORDER BY p.seccio_id
Теги:

1 ответ

0
Лучший ответ

Вы не можете отличать прямо от числовых значений до varchar (4) - если вы измените их все на char (4), вы потеряете синтаксические ошибки.

  • 0
    Tricky. Это сработало. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню