我有一张表格,列出了有关客户预订的信息。我需要将住在同一房间的客户分组在一起(通过具有相同的sharer_code
来识别)。但是,我还需要能够根据reservation_number
搜索其他表格(每个人预订都是唯一的)。
我有以下查询,提取每个预订并列出他们的到达日期,出发日期,他们住的房间,预订人数以及他们花费的金额。这是查询:
SELECT c.reservation_number, c.arrival_date, c.departure_date, r.room_type_code, p.number_of_persons, SUM(r.room_revenue + r.package_revenue) AS amount, SUM(r.spa_revenue) AS spa_revenue
FROM nw_src.dbo.customer_res c
JOIN nw_src.dbo.customer_resx p ON c.reservation_number = p.reservation_number
JOIN nw_src.dbo.res_revenue r ON c.reservation_number = r.reservation_number
WHERE c.cancellation_number = 0
GROUP BY c.reservation_number, c.arrival_date, c.departure_date, r.room_type_code, p.number_of_persons
ORDER BY c.reservation_number
这将逐个列出每个预订。如果sharer_code
中的customer_res
相同,我需要将它们分组。以下是customer_res
表的示例:
reservation_number | arrival_date | departure_date | sharer_code
10002 2017-04-21 2017-04-23 10004
10003 2017-04-11 2017-04-12 0
10004 2017-04-21 2017-04-23 10004
10008 2017-04-21 2017-04-23 10004
10009 2017-05-06 2017-05-08 0
10010 2017-04-28 2017-04-30 10010
在上文中,预订10002
和10008
属于一个群组,但位于sharer_code
标识的单独预订(或不同的帐单)上。他们的团体预订被分配了号码'10004。
预订10003
和10009
是可以在群组中的人,但无论哪种方式都在一个帐单上,因此不会有其他预订号码将其分组。
以下是customer_resx
表的示例:
reservation_number | number_of_persons
10002 1
10003 4
10008 1
10009 2
这有助于澄清上述内容。 10002
和10008
住在同一个房间,但是单独的账单上只有" 1"每个预订的人。但是,10003
和10009
也有多个人住在一个房间,但他们都在一个账单上(或#34;预订")。
以下是res_revenue
表的示例:
reservation_number | room_type_code | room_revenue | package_revenue | spa_revenue
10002 1cat -150 560 195
10002 1cat -150 560 315
10002 1cat 0 0 190
10003 1dol 236 1120 400
10003 1dol 0 0 245
10008 1cat -150 560 125
10008 1cat -150 560 290
10008 1cat 0 0 120
10009 1cyn 332.8 591.2 20
10009 1cyn 332.8 591.2 390
10009 1cyn 0 0 230
这是它非常清楚的地方。 10002
和10008
都留在1cat
,意味着他们是一个群体,我们需要将它们组合在一起。 10003
在他们自己的房间1dol
。 10009
位于1cyn
。
最后,这就是我希望结果集看起来像:
reservation_number | arrival_date | departure_date | room_type_code | number_of_persons | amount | spa_revenue
10002 2017-04-21 2017-04-23 1cat 2 1640 1235
10003 2017-04-11 2017-04-12 1dol 4 1356 645
10009 2017-05-06 2017-05-08 1cyn 2 1848 640
请注意,reservation_number
可以是10002
,10004
或10008
。这类似于MIN
,sharer_code
或MAX
。