将Oracle分层查询转换为MariaDB
我正在将oracle查询转换为maria db。MariaDB中没有类似“开始于…连接于…”这样的分层查询。所以我不得不创建类似于“开始…”的查询,但看起来很难。你们能帮帮我吗将Oracle分层查询转换为MariaDB,oracle,mariadb,hierarchical-data,Oracle,Mariadb,Hierarchical Data,我正在将oracle查询转换为maria db。MariaDB中没有类似“开始于…连接于…”这样的分层查询。所以我不得不创建类似于“开始…”的查询,但看起来很难。你们能帮帮我吗 SELECT * FROM (SELECT T2.JOB_TYPE, T2.COMPONENT_TYPE, T1.POOL_SEQ, FN_GET_CODE_VALUE(
SELECT *
FROM
(SELECT T2.JOB_TYPE,
T2.COMPONENT_TYPE,
T1.POOL_SEQ,
FN_GET_CODE_VALUE('componenttype',T2.COMPONENT_TYPE) AS COMPONENT_TYPE_NM,
MIN(T1.WORKFLOW_SEQ)WORKFLOW_SEQ,
MIN(T1.UPPER_WORKFLOW_SEQ)UPPER_WORKFLOW_SEQ,
MAX(T1.DEFAULT_JOB_SEQ)DEFAULT_JOB_SEQ,
T1.WORKFLOW_TYPE,
/* MAX(T1.WORKFLOW_TYPE)WORKFLOW_TYPE, */
COUNT(CASE T1.JOB_STATE WHEN '01' THEN 1 END)STATE_01_CNT,
COUNT(CASE T1.JOB_STATE WHEN '02' THEN 1 END)STATE_02_CNT,
COUNT(CASE T1.JOB_STATE WHEN '03' THEN 1 END)STATE_03_CNT,
COUNT(CASE T1.JOB_RESULT WHEN '20' THEN 1 END)ERCNT,
COUNT(CASE T1.JOB_RESULT WHEN '10' THEN 1 END)END_CNT,
COUNT(*)TOT_CNT
/* ,MAX(T1.POOL_SEQ)POOL_SEQ */
FROM JOB_TBL T1,
SERVER_POOL_TBL T2
WHERE T1.POOL_SEQ = T2.POOL_SEQ
)T
START WITH UPPER_WORKFLOW_SEQ IS NULL
CONNECT BY UPPER_WORKFLOW_SEQ = PRIOR WORKFLOW_SEQ
使用
connectby
是Oracle专有的扩展,在“发明”CTE之前引入。递归CTE也更通用。我认为Maria DB没有与connect by
相当的功能。。尽管您可以在过程或函数中实现它。