【发布时间】:2019-08-02 00:54:53
【问题描述】:
我有一张表查询是这样的
SELECT
cost_center_name,
person_number,
person_full_name,
TO_DATE(TO_CHAR(wfc_start_date,'DD-MON-YYYY HH:MI:SS AM'),'DD-MON-YYYY HH:MI:SS AM') start_date,
TO_DATE(TO_CHAR(wfc_end_date,'DD-MON-YYYY HH:MI:SS AM'),'DD-MON-YYYY HH:MI:SS AM') end_date,
TO_CHAR(wfc_start_date,'DD-MON-YYYY HH:MI:SS AM') start_date_hours,
TO_CHAR(wfc_end_date,'DD-MON-YYYY HH:MI:SS AM') end_date_hours,
pay_code_name,
duration_dd_hh_mi_ss,
wage_amount,
FROM
XX_pay_type a
WHERE
person_number IN (
'102',
'103'
)
AND pay_period_ending_date = '20-APR-2019'
duration_dd_hh_mi_ss, 具有像 00:4:32:00 这样的值 00:3:20:00
我想要来自 sql 查询的 sum(wage_amount) 和 sum(duration_dd_hh_mi_ss) 针对 person_number 我也想要grand_total (wage_amount)
sum(duration_dd_hh_mi_ss) 在这种情况下将是 00:7:52:00
我试过 sum(wage_amount) over(partition by person_number) 但我不能得到总和(duration_dd_hh_mi_ss)对person_number和grand(wage_total)
【问题讨论】:
-
如果
wfc_start_date是DATE列,则表达式TO_DATE(TO_CHAR(wfc_start_date,'DD-MON-YYYY HH:MI:SS AM'),'DD-MON-YYYY HH:MI:SS AM')可以简化为wfc_start_date。 从不,永远不要对已经是日期的值调用to_date()。这将首先将date值转换为varchar,然后将varchar转换回最初的date。