【发布时间】:2011-05-11 21:52:46
【问题描述】:
我正在尝试在 Oracle 中运行一个查询,我想在 2 列(position、at.task_number)上进行不同的选择,但总的来说我仍然想显示另外 4 列。
我知道 Oracle 只是在所有使用的列上使用 distinct,而不仅仅是 order 子句。如果我删除了 APP_GRP 和 ag.app_group_cd 的限定条件,那么我的查询会给出我想要的输出,但我还需要显示这些列。
这是我今天的选择的样子,但它并没有给我想要的东西。
select distinct
(select cv.display from code_value cv where cv.code_value = ag.position_cd) AS POSITION, AG.POSITION_CD,
(select cv.display from code_value cv where cv.code_value = ag.app_group_cd) AS APP_GRP, ag.app_group_cd,
at.task_number, at.description, Users=count(ag.position_cd)
from
application_group ag, application_task at, task_access ta, code_value cv
plan cv
where cv.code_set= 78
and cv.active_ind = 1
and cv.begin_effective_dt_tm <= SYSDATE
and cv.end_effective_dt_tm >= SYSDATE
join ag
where ag.position_cd = cv.code_value
join ta
where ta.app_group_cd = ag.app_group_cd
join at
where at.task_number = ta.task_number
and at.task_number in (1, 2, 3, 4, 5, 6)
and at.active_ind = 1
join d
group by
ag.position_cd, ag.app_group_cd, at.task_number, at.description
having
COUNT(ag.position_cd)>0
order by position, at.task_number
更新
我的查询返回类似这样的内容...
位置-----APP_GRP-----TASK_NUMBER
zzzDBA-------------DBA----------------------1
zzzDBA-------------DBA---------------------4
zzzDBA-------------DBA-------------------------3
zzzDBA-------------DBA----------------------5
zzzDBA-------------DBA-------------------------2
zzzDBA-------------DBA--------3
zzzDBA-------------DBA--------4
zzzDBA-------------DBA--------5
最终我想到达我只返回的地方:
位置-----APP_GRP-----TASK_NUMBER
zzzDBA-------------DBA----------------------1
zzzDBA-------------DBA---------------------4
zzzDBA-------------DBA-------------------------3
zzzDBA-------------DBA----------------------5
zzzDBA-------------DBA-------------------------2
“删除” TASK_NUMBER IN (3, 4 5) 的 dup 行
【问题讨论】: