我有這樣的MySQL查詢:合併相關記錄
select day(ReservationDate) as ReservationDay, sum(SleighSeats) as SleighSeats, sum(CabSeats) as CabSeats, 0 as IsFullMoon, '' as OverrideText
from Reservations
where month(ReservationDate) = 2
group by ReservationDate
union
select day(CalendarDate) as ReservationDay, 0 as SleighSeats, 0 as CabSeats, IsFullMoon, OverrideText
from CalendarOverrides
where month(CalendarDate) = 2
group by CalendarDate
order by ReservationDay
的預訂表可以包含任何給定的日曆日期的任何數量的記錄,或者根本沒有。 CalendarOverrides表可以爲每個日曆日期準確包含1或0個記錄。我試圖將結果合併在一起,但沒有完全正確。
這裏是我的結果集:
預訂23天的問題。我想那些2個記錄在1,從而合併該5倍的值是:
23,6,8,1,[空白/空]
澄清:
- ReservationDay是在兩個表中(名爲CalendarDate在CalendarOverrides)
- SleighSeats和CabSeats只存在於預訂表
- IsFullMoon和OverrideText只有在CalendarOverrides表中存在
在工會已經將合併所有預訂同一ReservationDay記錄的頂部查詢,但我怎樣才能合併底部查詢中的記錄與記錄中的記錄e頂部查詢,對於同一ReservationDay? (所以有從不爲任何一天超過1分的紀錄。)
你是100%真棒!感謝您的快速幫助。 – HerrimanCoder 2013-02-21 06:23:53
這隻會工作,因爲它是MySQL。在同一個select子句中使用聚合作爲非聚合而沒有「GROUP BY」子句是非確定性的,恕我直言,這是一種災難處方。 – 2013-02-21 06:31:05
@lc。感謝那。這是我的一個快速答案,我希望SweatCoder能夠測試並改進查詢。無論如何,我編輯的查詢和最新版本的SQL Server也工作,但也許你的答案更好。 – iiro 2013-02-21 06:50:14