2015-06-22 2 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 If 
Select f.cmd_code in ('COPSUL',... 
.... 
Смежные вопросы