MySQL групповая проблема

0

У меня есть следующая таблица:

date1              date2       sc   cash    date
"2010-09-20"    "2010-09-21"    202 300 "2010-03-01"
"2010-09-20"    "2010-09-21"    202 600 "2010-08-01"
"2010-09-20"    "2010-09-21"    202 670 "2010-08-20"
"2010-09-20"    "2010-09-21"    202 710 "2010-09-01"
"2010-09-20"    "2010-09-21"    202 870 "2010-09-21"
"2010-09-21"    "2010-09-22"    199 300 "2010-03-01"
"2010-09-21"    "2010-09-22"    199 600 "2010-08-01"
"2010-09-21"    "2010-09-22"    199 670 "2010-08-20"
"2010-09-21"    "2010-09-22"    199 710 "2010-09-01"
"2010-09-21"    "2010-09-22"    199 870 "2010-09-21"

Что нужно группировать по (date1,date2) и (cash,date) таким образом, что date = max(date <= date1)

date1              date2       sc   cash    date
"2010-09-20"    "2010-09-21"    202 870 "2010-09-21"
"2010-09-21"    "2010-09-22"    199 870 "2010-09-21"
  • 0
    какой тип данных ваши поля даты? Вы не используете VARCHAR?
Теги:
group-by

1 ответ

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

вам нужно использовать предложение HAVING... я просто предполагаю, что у вас есть идентификатор в каждой строке.. (если нет, вам придется изменить мой запрос, но это будет сложнее = D)

SELECT date1,date2,sc,cash,date
FROM mytable 
WHERE id IN (SELECT id
             FROM mytable GROUP BY date1,date2
             HAVING max(date)>=date1)

Я тестировал его в Postgresql и отлично работал. Конечно, я не смог проверить его в MySql

Удача

  • 0
    Большое спасибо, человек, он работал с той же идеей :)

Ещё вопросы

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