2014-12-29 2 views
-3

Позвольте мне объяснить, что у меня есть и чего я пытаюсь достичь. У меня есть таблица.Запрос MySQL для возврата столбца за дату в диапазоне дат?

Скажем, у меня есть таблица А: Бронирование

RoomNum  ArrivalDate DepartureDate 
101   2014-12-01  2014-12-03 
102   2014-12-02  2014-12-03 
103   2014-12-03  2014-12-04 
101   2014-12-05  2014-12-06 

ожидаемый результат должен быть что-то вроде следующего:

RoomNum  Des-01 Des-02 Des-03 Des-04 Des-05 Des-06 
101    1   1   1   0   1   1 
102    0   1   1   0   0   0 
103    0   1   1   0   1   1    

Любые идеи будут очень высоко.

Заранее спасибо

+0

попробуйте что-нибудь, а затем отправили сюда? Если вы попробуете найти в Google, много примеров на этом? просто нужно искать? – HaveNoDisplayName

+0

Ваши ожидаемые результаты говорят «Ян», но ни одна из ваших дат в январе. В дополнение к этому, не все ваши номера совпадают. У комнаты 103 нет дат 5 или 6 декабря. – AdamMc331

+0

Вы можете внести предложения по изменениям схемы БД? –

ответ

0

Один из вариантов у вас есть, в то время как оно не может быть эффективным или динамичным, чтобы использовать функцию SUM(). Внутри вы можете включить case case.

В этом случае я написал оператор дела, который проверяет, находится ли текущая дата между датами прибытия и отправления в комнате.

SELECT roomnum, 
    SUM(CASE WHEN '2014-12-01' BETWEEN arrivalDate AND departureDate THEN 1 ELSE 0 END) AS 'Dec-01', 
    SUM(CASE WHEN '2014-12-02' BETWEEN arrivalDate AND departureDate THEN 1 ELSE 0 END) AS 'Dec-02', 
    SUM(CASE WHEN '2014-12-03' BETWEEN arrivalDate AND departureDate THEN 1 ELSE 0 END) AS 'Dec-03', 
    SUM(CASE WHEN '2014-12-04' BETWEEN arrivalDate AND departureDate THEN 1 ELSE 0 END) AS 'Dec-04', 
    SUM(CASE WHEN '2014-12-05' BETWEEN arrivalDate AND departureDate THEN 1 ELSE 0 END) AS 'Dec-05', 
    SUM(CASE WHEN '2014-12-06' BETWEEN arrivalDate AND departureDate THEN 1 ELSE 0 END) AS 'Dec-06' 
FROM booking 
GROUP BY roomnum; 

Адрес SQL Fiddle.

+0

нет, это показывает отличный результат. dec 2nd on Room Number 101 is 0 –

+0

@PrimaSanjaya Извините, я неправильно понял вопрос. См. Редактирование. – AdamMc331

Смежные вопросы