请下列将Oracle语句转为mysql语句 decode(t.pm_mp_machine_id,'JJY213',t.stopcnt,t.stopcnt-(case when t.no>1 then nvl(lag(t.stopcnt,1) over(partition by t.producedate,t.pb_shift_id,t.pm_mp_machine_id,t.pm_mp_stopcode_id order by t.no),0) else 0 end )) AS STOPCNT
时间: 2024-04-19 10:25:47 浏览: 130
在MySQL中,你可以使用CASE语句来实现类似Oracle中的DECODE函数的功能。以下是将Oracle语句转换为MySQL语句的示例:
CASE WHEN t.pm_mp_machine_id = 'JJY213' THEN t.stopcnt ELSE t.stopcnt - (CASE WHEN t.no > 1 THEN COALESCE(LAG(t.stopcnt, 1) OVER(PARTITION BY t.producedate, t.pb_shift_id, t.pm_mp_machine_id, t.pm_mp_stopcode_id ORDER BY t.no), 0) ELSE 0 END) END AS STOPCNT
请注意,MySQL中使用COALESCE函数来代替Oracle中的NVL函数。
相关问题
请下列将Oracle语句转为mysql语句 decode(t.pm_mp_machine_id,'JJY213',ROUND(t.STOPTIME/60,0),ROUND(( t.STOPTIME-(case when t.no>1 then nvl(lag(t.STOPTIME,1) over(partition by t.producedate,t.pb_shift_id,t.pm_mp_machine_id,t.pm_mp_stopcode_id order by t.no),0) else 0 end ))/60,0 )) AS STOPTIME
在MySQL中,你可以使用CASE语句来模拟Oracle中的DECODE函数,并使用ROUND函数进行四舍五入。以下是将Oracle语句转换为MySQL语句的示例:
CASE WHEN t.pm_mp_machine_id = 'JJY213' THEN ROUND(t.STOPTIME/60, 0) ELSE ROUND((t.STOPTIME - (CASE WHEN t.no > 1 THEN COALESCE(LAG(t.STOPTIME, 1) OVER(PARTITION BY t.producedate, t.pb_shift_id, t.pm_mp_machine_id, t.pm_mp_stopcode_id ORDER BY t.no), 0) ELSE 0 END))/60, 0) END AS STOPTIME
请注意,MySQL中使用COALESCE函数来代替Oracle中的NVL函数,并使用ROUND函数进行四舍五入。
阅读全文