我想在下面的查询中完成其他内部联接,但是在创建临时表和内部联接后遇到语法错误。
WITH myPos
AS (
SELECT row_number() OVER (
PARTITION BY pr_emp_id ORDER BY db_last_upd
) AS RowNum
,pos.*
FROM master.s_postn pos
)
SELECT act.row_id
,People.SalesID
FROM master.s_evt_act act
INNER JOIN (
SELECT myPos.RowNum AS update_count
,myPos.db_last_upd
,myPos.bu_id
,myPos.ou_id
,myPos.Name
,myPos.pr_emp_id
,regexp_extract(myPos.Name, '(\\d+)', 1) AS SalesID
FROM myPos
INNER JOIN (
SELECT max(rowNum) maxRowNum
,pr_emp_id
FROM myPos
GROUP BY pr_emp_id
) AS maxPos ON myPos.pr_emp_id = maxPos.pr_emp_id
AND myPos.rowNum = maxPos.maxRowNum
WHERE lower(myPos.name) LIKE '% specifictitle %'
) AS People ON People.pr_emp_id = act.owner_per_id
在以下查询中捕获了其他数据:
SELECT sr_num
,owner_per_id
,x_cs_mgr_txt
FROM mastertable.s_srv_req AS req
WHERE req.x_cs_mgr_txt IS NOT NULL
AND req.sr_stat_id <> 'Closed'
此附加Join将为on req.owner_per_id = act.owner_per_id
我做了很多试验和错误,并认为我会有所帮助。
谢谢!
答案 0 :(得分:0)
除了尝试以下操作外,还无需多说:
WITH myPos
AS (
SELECT row_number() OVER (
PARTITION BY pr_emp_id ORDER BY db_last_upd
) AS RowNum
,pos.*
FROM master.s_postn pos
)
SELECT act.row_id
,People.SalesID
FROM master.s_evt_act act
INNER JOIN (
SELECT myPos.RowNum AS update_count
,myPos.db_last_upd
,myPos.bu_id
,myPos.ou_id
,myPos.Name
,myPos.pr_emp_id
,regexp_extract(myPos.Name, '(\\d+)', 1) AS SalesID
FROM myPos
INNER JOIN (
SELECT max(rowNum) maxRowNum
,pr_emp_id
FROM myPos
GROUP BY pr_emp_id
) AS maxPos ON myPos.pr_emp_id = maxPos.pr_emp_id
AND myPos.rowNum = maxPos.maxRowNum
WHERE lower(myPos.name) LIKE '% specifictitle %'
) AS People ON People.pr_emp_id = act.owner_per_id
INNER JOIN (
SELECT sr_num
,owner_per_id
,x_cs_mgr_txt
FROM mastertable.s_srv_req AS req
WHERE req.x_cs_mgr_txt IS NOT NULL
AND req.sr_stat_id <> 'Closed'
) AS req ON req.owner_per_id = act.owner_per_id