我尝试编写一个查询,根据另一个查询的结果生成一组结果。查询的所有必需数据来自一个表,只是一组不同的查询条件。我不确定我所询问的内容是否可以在单个查询中创建。
select OBJID, case_type, activity, TITLE, x_rev_esc_prim_reason, x_rev_esc_sec_reason, x_esc_third_reason, x_create_dt, x_update_dt, x_sales_rep
from table_case
上述查询的结果基本上从表中捕获了我需要的所有内容,但我需要减少数量或过滤返回的结果。
以下查询的结果是我需要的,以进一步减少上述查询的结果。此外,查询还需要以下查询结果中的x_create_dt大于上述查询结果的结果中的x_create_dt。
select OBJID, case_type, activity, TITLE, x_rev_esc_prim_reason, x_rev_esc_sec_reason, x_esc_third_reason, x_create_dt, x_update_dt, x_sales_rep
from table_case
where case_type = 'Sales'
and activity = 'DO'
IMAGE OF THE SAMPLE DATA AND RESULTS
DB目前是Oracle10g
答案 0 :(得分:0)
您希望为每个case_type='request'
返回所有sales_rep
行,其中x_create_date
早于x_create_date
行中的case_type='Sales' and activity='DO'
行sales_rep
。
首先,我们创建返回限定信息的查询:
SELECT sales_rep, MAX(x_create_date) AS latest_date
FROM table_case
WHERE case_type = 'Sales'
AND activity = 'DO'
GROUP BY sales_rep
您可以单独测试此查询,并验证它是否产生了所需的结果。
然后我们在外部查询中嵌入此查询,并加入这两个,如下所示:
SELECT c.OBJID, c.case_type, c.activity, c.TITLE,
c.x_rev_esc_prim_reason, c.x_rev_esc_sec_reason, c.X_esc_third_reason,
c.x_create_dt, c.x_update_dt
FROM table_case AS c
INNER JOIN (
SELECT sales_rep, MAX(x_create_date) AS latest_date
FROM table_case
WHERE case_type = 'Sales'
AND activity = 'DO'
GROUP BY sales_rep) AS q
ON c.sales_rep = q.sales_rep and q.latest_date > c.x_create_date
WHERE c.case_type = 'request'