2011-04-10 76 views
0

我想要做的是将客人的逗留时间乘以他们的房费,添加发票(对于他们在度假村进行的任何购物)并添加一张餐饮费用,通过客人的姓名给他们留下总费用。使用TSQL查询帮助(加入函数)

我有以下查询:

SELECT gr.g_name, (DATEDIFF(d, r.res_checkout_date, r.res_checkin_date) * pp.rate) + ISNULL(i.inv_amount, 0) + ISNULL(d.total_dining, 0) 
FROM guest_reservation gr 
LEFT OUTER JOIN invoice i ON gr.confirm_no = i.confirm_no 
JOIN reservation r ON gr.confirm_no = r.confirm_no 
JOIN price_plan pp ON r.price_plan = pp.price_plan; 
LEFT OUTER JOIN (SELECT r_confirmation_no, SUM(price) as total_dining 
       FROM dining_order do JOIN dining_menu dm ON do.item = dm.item 
       GROUP BY r_confirmation_no, price) as d ON d.r_confirmation_no = r.confirm_no 

然而,当我运行该查询,我得到了以下错误消息:

“消息156,15级,状态1,第6行 附近有语法错误关键字'LEFT' Msg 156,Level 15,State 1,Line 8 关键字'as'附近的语法不正确。

任何想法?

上面的查询系统使用以下表格:

客预约表具有数据以下列:

  • confirm_no
  • AGENT_ID
  • g_name
  • g_phone

预留表中有数据以下的列:

  • confirm_no
  • credit_card_no
  • res_checkin_date
  • res_checkout_date
  • default_villa_type
  • price_plan

发票表有以下几列与数据:

  • inv_no
  • inv_date
  • inv_amount
  • confirm_no

价格计划表中有数据以下的列:

  • price_plan
  • default_villa_type
  • bed_type
+0

请发布您迄今为止编写的代码。你毫无疑问知道,人们通常不喜欢只为你写代码。事实上,这是一个工作描述,而不是一个问题。 – 2011-04-10 01:19:26

回答

3

的语法错误是因为在pp.price_plan;;的。

+0

当我拿出来后,查询运行,但它很奇怪,我得到客人的名字和他们的各种数字的多个实例, 例如,我会得到一个客人的名字,3个条目全部与3 sepearate $金额。 – Jon 2011-04-10 08:18:36

+0

@Jon,每个'guest_reservation'至少有一行。每个客人不是一行。如果有一个'invoice'连接到一个'guest_reservation',那么每个'guest_reservation'都会得到不止一行。 – 2011-04-10 08:30:59