ravi.jain0310 Ответов: 1

Отображение суммы и максимального значения total в виде одного столбца, и оба они находятся в формате HH:MM:SS как это сделать с помощью SQL


У меня есть ниже 2 запроса от этого в первом запросе требуется сумма длительности как на основе имени шага и JOBNUMBER.am возможность генерировать результаты обоих запросов .

первый запрос:
select Convert(varchar(50), DATEADD(ms, SUM(DATEDIFF(ms, '00:00:00.000', DURATION)), '00:00:00.000'),108) As [Total Time Taken]
 FROM @TempJobResultsAutomation where STEPNAME IN('ProcessSp','Invoke_ESBI_SelfServe','invoke_ESBI_SelfServLoadBalance',
'Sync Q_Q2_Q3_Q4_Q5','SynchronisationSSBIModel') and JOBNUMBER IN(1,2,3,7)


Первый запрос дает мне сумму.

2-й запрос :

select max(DURATION)As [Sync Job Time]FROM @TempJobResultsAutomation where JOBNAME IN 
  ('ESBI_SelfServe_CubeSyncronization_Q1','ESBI_SelfServe_CubeSyncronization_Q2','ESBI_SelfServe_CubeSyncronization_Q3')

дает мне максимальные значения, основанные на JOBNAME

Но я хочу добавить максимальное значение в итоговый результат, как это сделать.

е.г

первый результат запроса

00:32:18

2-й вывод запроса

00:17:30

Я хочу показать и то и другое как один комбинированный результирующий набор в одном запросе как показано ниже

00:32:18 + 00:17:30= 49:48 минута


Выше оба исходят из одного и того же стола .

Что я уже пробовал:

Я попробовал это

select Convert(varchar(50), DATEADD(ms, SUM(DATEDIFF(ms, '00:00:00.000', DURATION)), '00:00:00.000'),108) As [Total Time Taken]
 FROM @TempJobResultsAutomation where STEPNAME IN('ProcessSp','Invoke_ESBI_SelfServe','invoke_ESBI_SelfServLoadBalance',
'Sync Q_Q2_Q3_Q4_Q5','SynchronisationSSBIModel') and JOBNUMBER IN(1,2,3,7) 

 
  select max(DURATION)As [Sync Job Time]FROM @TempJobResultsAutomation where JOBNAME IN 
  ('ESBI_SelfServe_CubeSyncronization_Q1','ESBI_SelfServe_CubeSyncronization_Q2','ESBI_SelfServe_CubeSyncronization_Q3')



Также это ниже попробовал

-- select Convert(varchar(50), DATEADD(ms, SUM(DATEDIFF(ms, '00:00:00.000', DURATION)), '00:00:00.000'),108) 
-- FROM
-- (
--  (select max(DURATION)FROM @TempJobResultsAutomation where JOBNAME IN 
--     ('ESBI_SelfServe_CubeSyncronization_Q1','ESBI_SelfServe_CubeSyncronization_Q2','ESBI_SelfServe_CubeSyncronization_Q3')
	 
--  )
 
-- )X
--  where STEPNAME IN('ProcessSp','Invoke_ESBI_SelfServe','invoke_ESBI_SelfServLoadBalance',
--'Sync Q_Q2_Q3_Q4_Q5','SynchronisationSSBIModel') and JOBNUMBER IN(1,2,3,7)

1 Ответов

Рейтинг:
2

Suvendu Shekhar Giri

Вы можете воспользоваться UNION и DATEDIFF для достижения ожидаемого результата.
Пример:

SELECT  CONVERT(VARCHAR, DATEADD(MS, SUM(DATEDIFF(SECOND, '0:00:00', t)) * 1000, 0), 114)  
FROM (
	SELECT '00:32:18'  AS t   --first query
	UNION
	SELECT '00:17:30'         --second query
) AS temptbl


Надеюсь, такой подход поможет :)


ravi.jain0310

Спасибо я попробовал приведенный выше пример и он сработал у меня

Выберите конвертировать(тип varchar(50), функция dateadd(МС, сумма(функция datediff(МС, '00:00:00.000', продолжительность)), '00:00:00.000'),108) как [Общее время, затраченное]
от(
выберите конвертировать(тип varchar(50), функция dateadd(МС, сумма(функция datediff(МС, '00:00:00.000', продолжительность)), '00:00:00.000'),108) Как продолжительность
Из @TempJobResultsAutomation, где STEPNAME IN ('ProcessSp', 'Invoke_ESBI_SelfServe', 'invoke_ESBI_SelfServLoadBalance', 'Sync Q_Q2_Q3_Q4_Q5', 'SynchronisationSSBIModel') и JOBNUMBER IN (1,2,3,7)
Союз
выбрать максимум(период)как продолжительность от @TempJobResultsAutomation где ИМЯ_ЗАДАНИЯ в
('ESBI_SelfServe_CubeSyncronization_q1','ESBI_SelfServe_CubeSyncronization_q2','ESBI_SelfServe_CubeSyncronization_q3')) Как [TotalTimeTaken]

Вывод я хочу как показано ниже из запроса сверху
01:05:46

Suvendu Shekhar Giri

Отлично !

Suvendu Shekhar Giri

Пожалуйста Accept Solution если это все равно помогло в решении вашей проблемы.
Спасибо :)