Усеченное неправильное приведение значения INTEGER не работает MYSQL

Я получаю сообщение об ошибке "Усеченное неправильное значение INTEGER" в MYSQL, когда выполняю приведенный ниже код. Я знаю, что логика не имеет особого смысла, и это изменится, и я более согласен с ошибкой. Я попытался привести весь оператор case, но все равно получаю то же сообщение об ошибке.

Вот исходное заявление

выберите (количество (случай, когда v.SalesDate = v.SalesDate, затем v.Surname end)) как x
из finaljoinalldata v сгруппировать по дате (v.SalesDate) в порядке по дате (v.SalesDate);

Я тоже пробовал

выберите (количество (CAST (случай, когда v.SalesDate = v.SalesDate, затем v.Surname end) AS SIGNED)) как x
из finaljoinalldata v группировать по дате (v.SalesDate) по дате (v.SalesDate);

Любая помощь будет оценена. Спасибо


person driveinmotors    schedule 17.04.2015    source источник
comment
Каковы типы данных столбцов и можете ли вы привести некоторые примеры данных, которые вызывают ошибку?   -  person jpw    schedule 18.04.2015
comment
да, SalesDate - это просто дата, а фамилия - это строка   -  person driveinmotors    schedule 18.04.2015
comment
Я удалил предложение group by, оно все равно не будет работать, выберите (count (случай, когда v.SalesDate = v.SalesDate, затем v.Surname end)) as x from finaljoinalldata v   -  person driveinmotors    schedule 18.04.2015


Ответы (1)


Ваше утверждение не имеет смысла. Почему у вас все равно есть условие case? Это избыточно, если вы специально не проверяете значения NULL.

Это должно работать:

select count(v.Surname) as x
from finaljoinalldata v
group by date(v.SalesDate)
order by date(v.SalesDate);

У меня возникают подозрения, когда я вижу group by, а столбцы group by не входят в select.

person Gordon Linoff    schedule 17.04.2015
comment
Логика заключается не только в этом, у нее будет второй подвыбор и соединение. Меня не беспокоит логика, потому что при полном запросе я получаю ту же ошибку, и я сужаю ее до оператора ( count(case when v.SalesDate = v.SalesDate then v.Surname end)) as x , the Оператор case сам по себе работает нормально, но как только он добавляет к нему счет, он выдает ошибку. Дайте мне знать, что имеет смысл. - person driveinmotors; 18.04.2015
comment
Я удалил предложение group by, оно все равно не будет работать, выберите (count (случай, когда v.SalesDate = v.SalesDate, затем v.Surname end)) as x from finaljoinalldata v - person driveinmotors; 18.04.2015
comment
Если вы хотите увидеть весь запрос, который я пытаюсь выполнить, он выглядит следующим образом: выберите дату (v.SalesDate), количество (случай, когда v.SalesDate = vv.minva, затем v.Surname end) как num_new_users, (count (различные v.Surname) - count(case когда v.SalesDate = vv.minva then v.Surname end)) as num_repeat_users from finaljoinalldata v join (выберите t.Surname, min(SalesDate) as minva from finaljoinalldata t group by Surname) vv on v.Surname = vv.Surname группировать по дате(v.SalesDate) упорядочивать по дате(v.SalesDate); - person driveinmotors; 18.04.2015
comment
@драйвмоторс . . . Эти проблемы не имеют смысла. Что произойдет, если вы замените count() на sum(case when . . . then 1 else 0 end). - person Gordon Linoff; 18.04.2015