我正在准备一份报告,我需要在第2栏中列出各个过程所用的时间总和。
我正在分享一个我无法理解的小片段。下面是查询。
SELECT DISTINCT *
FROM CTE_NAME
PIVOT ( SUM(TIME) FOR ACTIVITY IN ( NULL
,Process 1
,Process 2
)
) order by 2 desc
未来的事情noted:-
hours\u diff是在此共享代码段上方的cte表达式中计算的值
时差 date
类型。
未来的事情done:-
必须更改列名 NULL
至 TOTAL_TIME
需要转换 TIME
至 HH:MM:SS
我有的东西tried:-
我试过用 SUM(TIME) AS TOTAL_TIME ...
好像不管用。在那之后我也试着换了 NULL
与 TOTAL_TIME
但它在某种程度上改变了 TIME
价值观 Process 1
转向第二列。
以转换时间值(以秒为单位)。我以前用过这个 TO_CHAR(TRUNC(sec_diff/3600),'FM9900') || ':' || TO_CHAR(TRUNC(MOD(sec_diff,3600)/60),'FM00') || ':' || TO_CHAR(MOD(sec_diff,60),'FM00') as time_diff
. 但由于我无法从上面的代码片段中获取列,因此无法将值转换为 HH:MM:SS
如果我把 TIME
cte内部 SUM
中的函数 SELECT
查询抛出错误 Invalid Number
因为传递给sum函数的值的格式是 HH:MM:SS
1条答案
按热度按时间gijlo24d1#
为了给列命名,可以在中提供名称
IN
列表PIVOT
具体如下:计算
HH:MI:SS
从秒开始,在选择中使用它。(在diff小于86400(1天)的情况下工作秒)或者跟随会有更大的价值
注意:上述表达式中应使用pivot生成的秒差的列名。