SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Время (Сложить время услуг)
Время [сообщение #3790] Tue, 21 November 2023 10:20 Переход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
Добрый день!
запрос таков
SELECT
Name,
CONVERT(VARCHAR(Cool, ServDate, 04) AS ServDate,
CONVERT(VARCHAR(5), ServDate, 08) AS ServDate1,
Length as minut,
   (CASE WHEN CONVERT(VARCHAR(Cool, ServDate, 04)=CONVERT(VARCHAR(Cool, ServDate, 04)  and PriceAdditional=7 then  Quantity
WHEN ServicesSet.PriceAdditional is NULL  THEN Quantity
END) as usl,
format (dateadd(minute, (CASE WHEN CONVERT(VARCHAR(Cool, ServDate, 04)=CONVERT(VARCHAR(Cool, ServDate, 04)  and PriceAdditional=7 then  Length*Quantity else sum(Quantity*Length) end ), '1900'),'HH:mm:ss')as t1
FROM
0,1,2
WHERE
IsServed = '1' and
Served_Services = ServicesSet.Id
and  Served_Employee = EmployeeSet.Id
and VisitsSet.id=Served_Visits
and ClientsSet.id=Visits_Clients

and ServDate between  '18.10.2023'and
'01.11.2023'
and ServicesSet.Type in   ('СБР','СПедР','ССР','СПедР','СПсихР', 'СКР','АФКР','ПО')  
and EmployeeSet.id= '2283'
group by   ServDate,EmployeeSet.Name,Post,Quantity,Length,Description,P riceAdditional
показывает сколько услуг , какая  продолжительность  и специалист
нужно выявить общую сумму времени (сколько времени потратил сотрудник на оказание услуги)
он мне считает долько до 24:00 а нужно наприм.36:45)

[Обновления: Tue, 21 November 2023 11:05]

Известить модератора

Re: Время [сообщение #3802 является ответом на сообщение #3790] Tue, 21 November 2023 21:35 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
Как я понял есть длительность в минутах, вот сумму в минутах и нужно форматировать как надо.
Стандартных средств пока нет, может в 2022м будет.

Тут есть несколько способов, в некоторых делают свою функцию. в некоторых нет.
https://stackoverflow.com/questions/17733616/how-to-convert- number-of-minutes-to-hhmm-format-in-tsql
Re: Время [сообщение #3805 является ответом на сообщение #3802] Wed, 22 November 2023 06:40 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
попробовала так :SELECT CAST(ss / 60 AS VARCHAR(Cool) + ':' + FORMAT(ss % 60, 'D2') AS [Time]
выдает ошибку на тип данных
хотя время у меня CONVERT(VARCHAR(Cool, ServDate, 04) AS ServDate
Re: Время [сообщение #3806 является ответом на сообщение #3790] Wed, 22 November 2023 09:12 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
ss это что?
предполагается что это должно быть число минут.
не время, а целое число.
Re: Время [сообщение #3807 является ответом на сообщение #3806] Wed, 22 November 2023 09:31 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
верно это целое число минут
Re: Время [сообщение #3808 является ответом на сообщение #3807] Wed, 22 November 2023 09:50 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
krioxi писал(а) Wed, 22 November 2023 09:31
верно это целое число минут
так в первом запросе вроде нет поля ss?

там есть Length as minut, по названию я бы подумал что именно там длительность в минутах.
Re: Время [сообщение #3809 является ответом на сообщение #3808] Wed, 22 November 2023 10:02 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
извиняюсь я переделала, Length * Quantity это и есть минуты
я вычислила сумму минут (получилось 2086), как его теперь преобразовать во время  чтобы показывал больше 23:59:59 нарим. 38:45
Re: Время [сообщение #3810 является ответом на сообщение #3809] Wed, 22 November 2023 10:15 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
Я пробую ваш способ, ошибок не выдает.
Результат 34:46

Попробуйтe cast(ss as int)
А вообще, какую конкретно ошибку-то выдает?


DECLARE 
  @mins int = 2086

SELECT CAST(@mins / 60 AS VARCHAR(8)) + ':' + FORMAT(@mins % 60, 'D2') AS [Time]
Re: Время [сообщение #3811 является ответом на сообщение #3810] Wed, 22 November 2023 10:26 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
В принципе и FORMAT не нужен.
можно и так

select
  left(@mins / 60, 8) + ':' + left(@mins % 60, 2) as [Time]

[Обновления: Wed, 22 November 2023 10:28]

Известить модератора

Re: Время [сообщение #3812 является ответом на сообщение #3811] Wed, 22 November 2023 10:31 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
хотя там же надо с ведущим нулем для минут.
тогда еще поизвращаться.

[Обновления: Wed, 22 November 2023 10:32]

Известить модератора

Re: Время [сообщение #3813 является ответом на сообщение #3810] Wed, 22 November 2023 10:32 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
если сделать так:
SELECT CAST(t1/ 60 AS VARCHAR(Cool) + ':' + FORMAT(t1 % 60, 'D2') AS [Time]
 from
(select
EmployeeSet.Name AS Name,
Post,
CONVERT(VARCHAR(Cool, ServDate, 04) AS ServDate,
CONVERT(VARCHAR(5), ServDate, 08) AS ServDate1,
Length as minut,
   Description,
(CASE WHEN CONVERT(VARCHAR(Cool, ServDate, 04)=CONVERT(VARCHAR(Cool, ServDate, 04)  and PriceAdditional=7 then  Quantity
WHEN ServicesSet.PriceAdditional is NULL  THEN Quantity
END) as usl,
(CASE WHEN  PriceAdditional=7 then  Length else Length *Quantity end )as t1
  FROM
0,1,2,3


WHERE
IsServed = '1' and
Served_Services = ServicesSet.Id
and  Served_Employee = EmployeeSet.Id
and VisitsSet.id=Served_Visits
and ClientsSet.id=Visits_Clients

and ServDate between '16.10.2023'and '01.11.2023'

and ServicesSet.Type in ('СБР','СПедР','ССР','СПедР','СПсихР', 'СКР','АФКР','ПО')  
and EmployeeSet.id =2283
group by EmployeeSet.Name ,Quantity,
Post,
ServDate,
PriceAdditional,
Length,
   Description
) as mmm
выдает не одну общую сумму а NULL значения
Re: Время [сообщение #3814 является ответом на сообщение #3813] Wed, 22 November 2023 10:33 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
t1 это минуты

[Обновления: Wed, 22 November 2023 10:33]

Известить модератора

Re: Время [сообщение #3815 является ответом на сообщение #3812] Wed, 22 November 2023 10:34 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
так наверно

select
  left(@mins / 60, 8) + ':' + right('0' + convert(varchar(2), @mins % 60), 2) as [Time]
Re: Время [сообщение #3816 является ответом на сообщение #3815] Wed, 22 November 2023 10:37 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
"выдает не одну общую сумму а NULL значения"
ну проверять надо.
возможно в Quantity встречается null.

используйте функцию isnull
Re: Время [сообщение #3817 является ответом на сообщение #3815] Wed, 22 November 2023 10:37 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
Ошибка арифметического переполнения при преобразовании numeric к типу данных varchar.
Re: Время [сообщение #3818 является ответом на сообщение #3817] Wed, 22 November 2023 10:42 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
krioxi писал(а) Wed, 22 November 2023 10:37
Ошибка арифметического переполнения при преобразовании numeric к типу данных varchar.

значит varchar( 8 ) не хватает, ставьте не знаю, 30 например.
ну и еще, скорее всего у вас там не целое число.
Re: Время [сообщение #3819 является ответом на сообщение #3805] Wed, 22 November 2023 10:46 Переход к предыдущему сообщениюПереход к следующему сообщению
wildbill в настоящее время не в онлайне  wildbill
Сообщений: 43
Зарегистрирован: November 2023
Member
krioxi писал(а) Wed, 22 November 2023 06:40
попробовала так :SELECT CAST(ss / 60 AS VARCHAR(Cool) + ':' + FORMAT(ss % 60, 'D2') AS [Time]
выдает ошибку на тип данных
хотя время у меня CONVERT(VARCHAR(Cool, ServDate, 04) AS ServDate

ss значит не целое.

делайте cast(ss as int) / 60
Re: Время [сообщение #3820 является ответом на сообщение #3818] Wed, 22 November 2023 10:47 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
он не выдает сумму значений
Re: Время [сообщение #3821 является ответом на сообщение #3820] Wed, 22 November 2023 11:04 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
а если,не целое?

Re: Время [сообщение #3822 является ответом на сообщение #3816] Wed, 22 November 2023 11:31 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
wildbill писал(а) Wed, 22 November 2023 10:37
"выдает не одну общую сумму а NULL значения"
ну проверять надо.
возможно в Quantity встречается null.

используйте функцию isnull
нету NULL значений
Re: Время [сообщение #3823 является ответом на сообщение #3822] Wed, 22 November 2023 12:10 Переход к предыдущему сообщениюПереход к следующему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
Confused Sad
Re: Время [сообщение #3829 является ответом на сообщение #3823] Thu, 23 November 2023 12:17 Переход к предыдущему сообщению
krioxi в настоящее время не в онлайне  krioxi
Сообщений: 16
Зарегистрирован: October 2023
Junior Member
спасибо
Предыдущая тема: Как скопировать записи таблицы, если таблица битая?
Следующая тема: Журнал Плана обслуживания
Переход к форуму:
  


Текущее время: Sun Nov 24 08:12:01 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00881 секунд