Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Roman Orestovich Member Откуда: Сообщений: 16 |
Друзья, нужна функція которая будет в таблице отображать в матричной таблице от 1-31 дня месяца |
3 июл 17, 14:23 [20609071] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Roman Orestovich, "Нужна функция ТЧК Подробности письмом ТЧК" |
3 июл 17, 14:44 [20609169] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
TaPaK, какой-то unpivot календаря нужен, по все видимости. |
3 июл 17, 14:58 [20609256] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 940 |
SET DATEFIRST 1 ; WITH dd AS ( SELECT [wn] = DATEPART( WEEK, ss.[date] ), [wd] = DATEPART( WEEKDAY, ss.[date] ), ss.[date] FROM ( SELECT [date] = ( CONVERT( DATE, '20170101' ) ) ) ss UNION ALL SELECT [wn] = DATEPART( WEEK, ss.[date] ), [wd] = DATEPART( WEEKDAY, ss.[date] ), ss.[date] FROM dd CROSS APPLY ( SELECT [date] = DATEADD( DAY, 1, dd.[date] ) ) ss WHERE dd.[date] < '20171231' ) SELECT [wn], [mon] = MAX( CASE WHEN [wd] = 1 THEN [date] END ), [tue] = MAX( CASE WHEN [wd] = 2 THEN [date] END ), [wed] = MAX( CASE WHEN [wd] = 3 THEN [date] END ), [thu] = MAX( CASE WHEN [wd] = 4 THEN [date] END ), [fri] = MAX( CASE WHEN [wd] = 5 THEN [date] END ), [sat] = MAX( CASE WHEN [wd] = 6 THEN [date] END ), [sun] = MAX( CASE WHEN [wd] = 7 THEN [date] END ) FROM dd GROUP BY [wn] OPTION ( MAXRECURSION 0 ) |
3 июл 17, 15:00 [20609276] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
календарь нынешнего месяца![]() Ну и сообщения там вокруг данной ссылки почитать можно. Может, и не то, что нужно, конечно |
3 июл 17, 15:57 [20609553] Ответить | Цитировать Сообщить модератору |
_human Member Откуда: Сообщений: 566 |
Roman Orestovich,declare @dt date = getdate(); ;with m_days as ( select top 31 RIGHT('00' + CONVERT(VARCHAR(2), ROW_NUMBER() over(order by (select null))), 2) as m_day ,RIGHT('00' + CONVERT(VARCHAR(2), month(@dt)), 2) as m_month ,CONVERT(VARCHAR(4), year(@dt)) as m_year from master..spt_values v ) , src as ( select m_day ,datename(dw, convert(date, concat(m_year, m_month, m_day))) as dw ,datepart(week, convert(date, concat(m_year, m_month, m_day))) as wk from m_days where isdate(concat(m_year, m_month, m_day)) = 1 ) select p.* from ( select * from src ) p_src pivot(max(m_day) for dw in (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)) as p |
3 июл 17, 16:54 [20609843] Ответить | Цитировать Сообщить модератору |
Dimbuch® Member Откуда: Москва Сообщений: 117 |
Roman Orestovich,;WITH cte_days AS ( SELECT dp_day = CONVERT(smalldatetime, '20170101') UNION ALL SELECT dp_day = DATEADD(DAY, 1, c.dp_day) FROM cte_days c WHERE c.dp_day < CONVERT(smalldatetime, '20170331') ) SELECT * FROM cte_days OPTION (MAXRECURSION 0) |
5 июл 17, 18:37 [20616880] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |