powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нормализация представления лет, месяцев и дней
4 сообщений из 4, страница 1 из 1
Нормализация представления лет, месяцев и дней
    #40059876
rebel25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

У меня в результат запроса выходят годы месяцы и дни по работникам. У некоторых людей по несколько периодов.
Я складываю результат и получаю 2 года 15 мес 63 дня, например по человеку.

Скажите как нормализовать представление в запросе, например то что я написал в примере должно превратиться примерно в 3 года 5 мес 3 дня?

select 123 as id, 2 as y , 15 as m, 63 as d into #t
union all
select 321 as id, 1 as y , 25 as m, 20
go
select * from #t
...
Рейтинг: 0 / 0
Нормализация представления лет, месяцев и дней
    #40059886
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак.
Обычный способ такого представления базируется на опорной дате и количеству дней.
А в вашем представлении неизвестно, сколько дней в году и сколько в месяцах
Хотя, если вас устроит усредненная, то сложите все и разбейте на стандартные, скажем, год - 365 дней, месяц - 30 дней + хх дней
...
Рейтинг: 0 / 0
Нормализация представления лет, месяцев и дней
    #40059911
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with t as (select 123 as id, 2 as y , 15 as m, 63 as d )
   , x as ( select id, dateadd(day, d, dateadd( month, m, dateadd( year, y, 0 ) ) ) as dt from t )
   select id
        , datediff( year, 0, dt ) as y
        , datediff( month
                  , dateadd( year, datediff( year, 0, dt ), 0)
                  , dt 
                  ) as m
        , datediff( day 
                  , dateadd( month
                            , datediff( month
                                      , dateadd( year, datediff( year, 0, dt ), 0)
                                      , dt 
                                      )
                            , dateadd( year, datediff( year, 0, dt ), 0)
                            )
                  , dt 
                  ) as d
     from x;
...
Рейтинг: 0 / 0
Нормализация представления лет, месяцев и дней
    #40060878
rebel25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, Спасибо!
Ведь можно было оттолкнуться от нуля. Результат устроил заказчика.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нормализация представления лет, месяцев и дней
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]