sql - IIF to Case translation -


ok, need convert query used on access database query run on sql-compact edition database.

and within query had iif statement (which doesn't work in sql)

everything i've looked suggests should replace case when.

this original code:

select [ordernumber], [customername], [po_tag], [shape], [size], [drawingnumber], [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime], [dateimported],  sum(iif([status] = 'printed', panelbuildtime, 0)) orderbuildtimee  steelorders  inner join finalizedprintedstickers  on  steelorders.ordernumber = left(finalizedprintedstickers.sn,10) group steelorders.ordernumber, [customername], [po_tag], [shape], [size], [drawingnumber],  [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime],  [dateimported]  

this iif statement:

sum(iif([status] = 'printed', panelbuildtime, 0)) orderbuildtimee 

this replaced iif statement with:

sum(case status when 'printed' panelbuildtime else 0) orderbuildtimee  

this full body of code looks afterwords:

select [ordernumber], [customername], [po_tag], [shape], [size], [drawingnumber], [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime], [dateimported], sum(case status when 'printed' panelbuildtime else 0) orderbuildtimee  steelorders  inner join finalizedprintedstickers  on  steelorders.ordernumber = left(finalizedprintedstickers.sn,10) group steelorders.ordernumber, [customername], [po_tag], [shape], [size], [drawingnumber],  [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime],  [dateimported]  

and new error message:

major error 0x80040e14, minor error 25501 > select [ordernumber], [customername], [po_tag], [shape], [size], [drawingnumber], [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime], [dateimported], sum(case status when 'printed' panelbuildtime else 0) orderbuildtimee  steelorders  inner join finalizedprintedstickers  on  steelorders.ordernumber = left(finalizedprintedstickers.sn,10) group steelorders.ordernumber, [customername], [po_tag], [shape], [size], [drawingnumber],  [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime],  [dateimported] there error parsing query. [ token line number = 12,token line offset = 58,token in  error = ) ] 

the proper syntax case is:

simple case expression:  case input_expression       when when_expression result_expression [ ...n ]       [ else else_result_expression ]  end   searched case expression: case      when boolean_expression result_expression [ ...n ]       [ else else_result_expression ]  end 

in query missing end case:

sum(case status when 'printed' panelbuildtime else 0 end) orderbuildtimee  

so full code is:

select [ordernumber],   [customername],   [po_tag],   [shape],   [size],   [drawingnumber],   [orderbuildtime],   [requireddatetime],   [lateststatustime],   [expectedcompletiondatetime],   [dateimported],   sum(case status when 'printed' panelbuildtime else 0 end) orderbuildtimee  steelorders  inner join finalizedprintedstickers    -- left not supported sql server ce use substring   -- on steelorders.ordernumber = left(finalizedprintedstickers.sn,10)   on steelorders.ordernumber = substring(finalizedprintedstickers.sn, 1, 10) group steelorders.ordernumber, [customername], [po_tag], [shape], [size], [drawingnumber],  [orderbuildtime], [requireddatetime], [lateststatustime], [expectedcompletiondatetime],  [dateimported]  

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -