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
Post a Comment