Если оператор в предложении где в MySQL выберите оператор

0

Мне нужно поставить "if" в мое предложение where в моем заявлении select. Я просматриваю две даты и хочу вытащить данные между ними. Мне нужно проверить, отличается ли год, если месяц отличается, а затем и день. мой текущий оператор выбора:

  select count(*)
  from SOMT_Development.Board_Metrics_Data bmd
  where bmd.Metric_Year >= startYear and bmd.Metric_Year <= endYear and 
  Metric_Month >= startMonth and Metric_Month <= endMonth and 
  bmd.Metric_Day >= startDay and bmd.Metric_Day <= endDay and 
  bmd.Board_Metrics_ID = 1 and bmd.Value_Colour = "Red" and
  bmd.Date_Created = (select max(bmd2.Date_Created)
                  from SOMT_Development.Board_Metrics_Data bmd2
                  where bmd2.Board_Metrics_ID = bmd.Board_Metrics_ID and
                        bmd2.Metric_Year = bmd.Metric_Year and
                        bmd2.Metric_Month = bmd.Metric_Month and
                        bmd2.Metric_Day = bmd.Metric_Day
                 )) as 'red'

В настоящее время, если год и месяц совпадают в начале и конце даты, оператор работает. Однако, когда разные месяцы/годы отличаются, они работают неправильно. Это данные, которые возвращаются, если я вводю даты для 2018-3-1 и 2018-4-4

  2018-03-29 09:46:20    green   1   no_comment  2018    3   1
  2018-03-29 09:46:20    red     1   no_comment  2018    3   2
  2018-03-29 09:46:20    white   1   no_comment  2018    3   3
  2018-03-29 09:46:20    white   1   no_comment  2018    3   4
  2018-04-04 13:25:19    green   1   no_comment  2018    4   4
  2018-04-02 13:25:30    green   1   no_comment  2018    4   2
  2018-04-03 13:25:47    green   1   no_comment  2018    4   3

Пожалуйста, не могли бы вы показать мне, как сделать выражение if, что если бы месяцы и годы были разными, они искали бы всю оставшуюся часть месяца.

Извините, если это простой вопрос.

Спасибо

  • 1
    Предложение where в основном является оператором if : «включить строку в результат it ...». Как вы видите, что "поиск через остаток месяца" вещь?
  • 0
    Ваш вопрос не имеет смысла. Вы указываете запрос, который имеет один столбец, но «данные, которые возвращаются» имеет 7 столбцов. Я бы предложил вам задать еще один вопрос. Обязательно включите образцы данных, желаемые результаты и хорошее объяснение того, чего вы хотите достичь.
Теги:
database
stored-procedures

1 ответ

0

Оператор IF может использоваться только в процедурной синтаксисе, а не в выражении запроса в разделе where. Хотя вы можете использовать инструкцию CASE если это необходимо. Более того, не вижу ничего плохого в вашем текущем подходе

Ещё вопросы

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