2015-06-22 53 views
-3

我想創建一個If語句,如果該項目超過100K或公司名爲CGELENA或CGFEDUN,將查找並列出以下值,如果不是,則檢查商品類型下面If語句錯誤的語法錯誤

If (ord_miscqty >='100000' OR m.cmp_id in('CGELENA','CGFEDUN') 
    Begin 
    Select 
    ord_number 
     ,ord_status 
     ,m.cmp_name 
     ,Ord_startdate 
     ,ord_miscqty AS [FreightValue] 
     ,c.car_ins_cargolimits AS [CargoAmount] 
     ,o.ord_carrier AS [Carrier] 
     ,l.NAME AS [LSM2] 
     ,c.car_iccnum AS [MCNumber] 
     ,o.ord_description AS [Commodity] 
     ,f.cmd_code [Commody Code] 
     ,(
      SELECT t.ta_quantity 
      FROM trlaccessories AS t 
      WHERE o.ord_carrier = t.ta_trailer 
       AND t.ta_type = 'POWER' 
      ) AS [PowerUnits] 
     ,(
      SELECT n.not_text 
      FROM notes AS n 
      WHERE n.nre_tablekey = o.ord_carrier 
       AND n.not_type = 'I' 
      ) AS [Note] 
     ,(
      SELECT n.last_updatedatetime 
      FROM notes AS n 
      WHERE n.nre_tablekey = o.ord_carrier 
       AND n.not_type = 'I' 
      ) AS [NoteDate] 
     ,(
      SELECT q.caq_type 
      FROM carrierqualifications AS q 
      WHERE o.ord_carrier = q.caq_id 
       AND q.caq_type = 'RES' 
      ) AS [Restriction] 
     ,(
      SELECT n.not_expires 
      FROM notes AS n 
      WHERE n.nre_tablekey = o.ord_carrier 
       AND n.not_type = 'I' 
      ) AS [NoteExp] 
    FROM orderheader AS o 
    INNER JOIN carrier AS c ON o.ord_carrier = c.car_id 
    INNER JOIN company AS m ON o.ord_billto = m.cmp_id 
    INNER JOIN labelfile AS l ON o.ord_revtype3 = l.abbr 
    join stops as s on s.ord_hdrnumber = o.ord_hdrnumber 
    join FREIGHTDETAIL as f on f.stp_number = s.stp_number 
    Where datediff(hour, getdate(), ord_startdate) > 0 
     AND ord_status IN (
      'PLN' 
      ,'DSP' 
      ) 
     AND l.labeldefinition = 'RevType3' 
    End 

    Else If 
    f.cmd_code in ('COPSUL', 
    'HAZMOLY', 
    'COPANO', 
    'COPCAN', 
    'COPING', 
    'COPPAN', 
    'COPPER', 
    'COPROD', 
    'COPSTSHT', 
    'COPSULNH', 
    'APPLINCS', 
    'LIQUOR') 
    Begin 
    Select 
    ord_number 
     ,ord_status 
     ,m.cmp_name 
     ,Ord_startdate 
     ,ord_miscqty AS [FreightValue] 
     ,c.car_ins_cargolimits AS [CargoAmount] 
     ,o.ord_carrier AS [Carrier] 
     ,l.NAME AS [LSM2] 
     ,c.car_iccnum AS [MCNumber] 
     ,o.ord_description AS [Commodity] 
     ,f.cmd_code [Commody Code] 
     ,(
      SELECT t.ta_quantity 
      FROM trlaccessories AS t 
      WHERE o.ord_carrier = t.ta_trailer 
       AND t.ta_type = 'POWER' 
      ) AS [PowerUnits] 
     ,(
      SELECT n.not_text 
      FROM notes AS n 
      WHERE n.nre_tablekey = o.ord_carrier 
       AND n.not_type = 'I' 
      ) AS [Note] 
     ,(
      SELECT n.last_updatedatetime 
      FROM notes AS n 
      WHERE n.nre_tablekey = o.ord_carrier 
       AND n.not_type = 'I' 
      ) AS [NoteDate] 
     ,(
      SELECT q.caq_type 
      FROM carrierqualifications AS q 
      WHERE o.ord_carrier = q.caq_id 
       AND q.caq_type = 'RES' 
      ) AS [Restriction] 
     ,(
      SELECT n.not_expires 
      FROM notes AS n 
      WHERE n.nre_tablekey = o.ord_carrier 
       AND n.not_type = 'I' 
      ) AS [NoteExp] 
    FROM orderheader AS o 
    INNER JOIN carrier AS c ON o.ord_carrier = c.car_id 
    INNER JOIN company AS m ON o.ord_billto = m.cmp_id 
    INNER JOIN labelfile AS l ON o.ord_revtype3 = l.abbr 
    join stops as s on s.ord_hdrnumber = o.ord_hdrnumber 
    join FREIGHTDETAIL as f on f.stp_number = s.stp_number 
    Where datediff(hour, getdate(), ord_startdate) > 0 
     AND ord_status IN (
      'PLN' 
      ,'DSP' 
      ) 
     AND l.labeldefinition = 'RevType3' 
    End 
+2

1號線缺少')'一開始 –

+2

你用什麼RDBMS?它們中的一些可能不支持在常規查詢的上下文中的「IF/ELSE」控制結構,而是僅允許它們存儲在存儲過程/函數中。 '[]'括號可能表示MS SQL Server或Access。 –

+3

我的天啊,你寫了這樣一個怪物,找不到丟失的支架? –

回答

0

被列入你必須使用else語句一個選擇

Else If 
Select f.cmd_code in ('COPSUL',... 
....