如何从oracle转换到sql?
把(+)放在左边和(+)右边有什么区别?
可以帮助我转换,尝试在线工具对我不起作用。
SELECT sc.serial_no, sc.status, ca2.cust_ref_no, ca2.name, ca2.msis, ca2.state_name, to_char(ca2.term_datetime,'DD/MM/YYYY HH:MI AM') te_datetime, ca2.serial_no term_ssno
from so sc,
( select ca.so_id, c.cust_ref_no, c.name, ca.msis, s.state_name, ca.te_datetime, t.serial_no
from customer c, customer_account ca, state s, terminal t
where c.install_state_id= s.state_id and c.cust_id = ca.cust_id and ca.term_id = t.term_id(+)) ca2
where sc.so_id=ca2.so_id (+)and sc.status='Term'
使用(+)是sql-92标准,强烈建议使用ANSI标准。
(+)表示连接的性质左连接或右连接。
对于您的查询,它将像这样:
SELECT sc.serial_no, sc.status,
ca2.cust_ref_no, ca2.name,
ca2.msis, ca2.state_name,
to_char(ca2.term_datetime,'DD/MM/YYYY HH:MI AM') te_datetime,
ca2.serial_no term_ssno
from so sc LEFT JOIN
( select ca.so_id, c.cust_ref_no,
c.name, ca.msis,
s.state_name, ca.te_datetime, t.serial_no
from customer c
JOIN customer_account ca ON c.cust_id = ca.cust_id
JOIN state s ON c.install_state_id= s.state_id
LEFT JOIN terminal t ON ca.term_id = t.term_id) ca2
ON sc.so_id=ca2.so_id
WHERE sc.status='Term'