2011-04-10 75 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