【发布时间】:2017-12-17 07:09:27
【问题描述】:
我正在使用 oracle fusion,我正在使用的其中一个应用程序(值集)不允许我在 select 语句中使用函数,并且 from 部分有 200 个字符的限制。
这个查询给了我我想要的,但我不能用 select- 使用 sum-
SELECT SUM(d.ABS_UNITS) from PER_ALL_PEOPLE_F b, ANC_ABSENCE_PLANS_F_TL c,
ANC_PER_ABS_PLAN_ENTRIES d
WHERE
d.PERSON_ID = b.PERSON_ID
AND c.ABSENCE_PLAN_ID = d.ABSENCE_PLAN_ID
AND c.name = 'FMLA LWOP'
and d.start_date between '2017-04-02' and '2017-04-15'
AND b.PERSON_NUMBER = p_num
我也试过了,但遇到字符限制问题 -
Select aa.bb from
(SELECT SUM(d.ABS_UNITS) as bb from PER_ALL_PEOPLE_F b,
ANC_ABSENCE_PLANS_F_TL c, ANC_PER_ABS_PLAN_ENTRIES d
WHERE
d.PERSON_ID = b.PERSON_ID
AND c.ABSENCE_PLAN_ID = d.ABSENCE_PLAN_ID
AND c.name = 'FMLA LWOP'
and d.start_date between '2017-04-02' and '2017-04-15'
AND b.PERSON_NUMBER = p_num
) aa
这种方法是我一直在尝试将总和放在 where 子句中的方法,但它没有返回任何内容。
Select
d.ABS_UNITS
FROM
PER_ALL_PEOPLE_F b, ANC_ABSENCE_PLANS_F_TL c, ANC_PER_ABS_PLAN_ENTRIES d
WHERE
d.PERSON_ID = b.PERSON_ID
AND c.ABSENCE_PLAN_ID = d.ABSENCE_PLAN_ID
AND c.name = 'FMLA LWOP'
AND b.PERSON_NUMBER = pnum
and d.start_date between '2017-04-02' and '2017-04-15'
AND d.ABS_UNITS = (SELECT SUM(d.ABS_UNITS) from PER_ALL_PEOPLE_F b,
ANC_ABSENCE_PLANS_F_TL c, ANC_PER_ABS_PLAN_ENTRIES d
WHERE
d.PERSON_ID = b.PERSON_ID
AND c.ABSENCE_PLAN_ID = d.ABSENCE_PLAN_ID
AND c.name = 'FMLA LWOP'
and d.start_date between '2017-04-02' and '2017-04-15'
AND b.PERSON_NUMBER = pnum
)
任何意见和建议将不胜感激。
【问题讨论】:
-
您可能需要一个带有
SUM的GROUP BY并需要一个HAVING子句,该子句充当聚合金额的WHERE。 -
我没有接触过融合应用。查看数据模型,我不清楚您是否要对 ABS_UNITS 求和。您是否尝试过创建查询视图?
-
Oracle fusion 是否支持使用 WITH 子句?如果是这样,也许可以利用它?
-
您不能只在原始文件中使用 HAVING 子句:SELECT SUM(d.ABS_UNITS) from PER_ALL_PEOPLE_F b, ANC_ABSENCE_PLANS_F_TL c, ANC_PER_ABS_PLAN_ENTRIES d WHERE d.PERSON_ID = b.PERSON_ID AND c.ABSENCE_PLAN_ID = d.ABSENCE_PLAN_ID AND c.name = 'FMLA LWOP' 和 d.start_date 在 '2017-04-02' 和 '2017-04-15' 之间有 b.PERSON_NUMBER = p_num
-
很遗憾,我在该区域也无法使用 HAVING 和 GROUP BY。
标签: sql oracle oracle-fusion-apps