我有这样的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