2011-09-14 38 views
0
SELECT ph.order_ref_no, 
     pd.porder_item_no, 
     pd.catlog_code, 
     pd.order_qty, 
     pd.part_number, 
     ph.porder_no, 
     ph.order_date, 
     pd.date_required, 
     pd.project_no, 
     s.name, 
     SUM(pd.order_qty * pd.price) - 
     (SUM(pd.order_qty * pd.price) * pd.discount_pct) + (SUM(
     pd.order_qty * pd.price) * pd.gst_rate) AS total, 
     CASE ph.status 
     WHEN (pd.order_qty > SUM(dd.recd_qty)) THEN 'Proceed' 
     WHEN pd.order_qty = SUM(dd.recd_qty) THEN 'Completed' 
     WHEN 'X' THEN 'canceled' 
     ELSE 'New' 
     END          AS status 
FROM zpu_purch_heade ph 
     INNER JOIN zpu_purch_detai pd 
     ON ph.porder_no = pd.porder_no 
     INNER JOIN zpu_supplie s 
     ON ph.supplier_code = s.supplier_code 
     LEFT JOIN zpu_deldoc_detai dd 
     ON ph.porder_no = dd.porder_no 
WHERE ph.client_code = 'METTRA' 
GROUP BY pd.porder_item_no, 
      ph.order_ref_no, 
      pd.project_no, 
      ph.porder_no, 
      ph.order_date, 
      pd.date_required, 
      pd.order_qty, 
      pd.part_number, 
      pd.price, 
      pd.discount_pct, 
      pd.gst_rate, 
      pd.status, 
      s.name, 
      ph.status, 
      pd.catlog_code, 
      pd.order_qty 
ORDER BY ph.order_date DESC 

我得到错误“不正确的语法附近'>'。”在情况下声明最新的错误呢?sql case语法错误

回答

4

要解决,你需要你的case语句改变这种语法错误:

CASE 
    WHEN (pd.order_qty > SUM(dd.recd_qty)) THEN 'Proceed' 
    WHEN pd.order_qty = SUM(dd.recd_qty) THEN 'Completed' 
    WHEN ph.status = 'X' THEN 'canceled' 
    ELSE 'New' 
END AS status 
0

问题是这样的部分:

CASE ph.status WHEN (pd.order_qty > sum(dd.recd_qty)) 

不能包括SUM这样。

0

ph.statusCASE之后是不正确的。去掉它。