CacheSQL рассчитать общее время
Я рассчитываю рассчитать общее время из столбца, похожего на этот форум:
https://stackru.com/questions/3054943/calculate-sum-time-with-mysql
Вот мой код, который не работает:
SEC_TO_TIME(SUM(TIME_TO_SEC(CASE WHEN (SUBSTR(Total_Time,1,2) -
SUBSTR(ActivityTime,1,2)) < 0
THEN '0' || DATEDIFF(hh,Total_Time,ActivityTime)-1 || ':' || DATEDIFF(mi,Total_Time,ActivityTime)
WHEN (SUBSTR(Total_Time,1,2) - SUBSTR(ActivityTime,1,2)) >= 0
THEN '0' || DATEDIFF(hh,Total_Time,ActivityTime) || ':' ||
DATEDIFF(mi,Total_Time,ActivityTime)
END))) AS TotalVariance,
Любая помощь будет отличной! Спасибо!
1 ответ
Я не уверен, поможет ли это вам или кому-то другому. В ObjectScript есть свойства Calculated / SqlComputed. По сути, вы можете определить свойство как:
Property TotalTime As %Integer [ Calculated, SqlComputeCode =
{s {TotalTime}=##class(SomeClass).SomeClassMethod({Id})}, SqlComputed ]
Теперь вам просто нужно написать SomeClassMethod. Он может продолжить любой код ObjectScript, включая%Open, только не делайте его циклическим. Если вам нужны только некоторые другие поля, чтобы сделать это, вы можете пойти по этому пути:
Property TotalTime As %Integer [ Calculated, SqlComputeCode =
{s {TotalTime}=##class(Some).SomeCM({PropA}, {PropB})}, SqlComputed ]
Там вы получите свойства в качестве входных данных для вашего метода класса, вместо получения идентификатора и вызова..%Open(Id).
В любом случае, вы можете использовать полученное вычисленное свойство даже для индексов.