Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Количество по месяцам и годам (как красиво (запрос) наполнить таблицу данными?)  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
mssql2005,
по форуму вопрос посмотрел остался один момент

1. есть таблица по годам месяцам - пустая (заголовки)
2. есть таблица с данными - просто даты

вопрос как объединить таблицы красиво (в 'ячейки' первой вставить sum по месяцам и годам)

declare @r table([date] datetime primary key clustered, January int, February int, March int, April int, May int, June int, July int, August int, September int, October int, November int, December int)
declare @dt datetime
declare @dn datetime

insert @r([date]) VALUES('2006') -- вставляем дату начала 

While 
  (select max([date]) from @r)<getdate() -- по текущую дату
    begin
      select @dn = DATEADD (year , 1, (select max([date]) from @r))
      insert @r([date]) VALUES(@dn)
    end

-- таблица для графика
select * From @r

-- данные для графика (из внутренней crm)
Select rw.cd --чисто дата (тип дата время)
  From lsdbo.object_reference rw left join lsdbo.object_type tw on rw.type_id = tw.id left join 
       lsdbo.attrib_value av11 on rw.id=av11.object_id and av11.attrib_id=3000000000105 left join	
       lsdbo.value_string vv11 on av11.value_id=vv11.id and av11.attrib_id=3000000000105
 Where tw.mnemo='Del' and vv11.value= 'Исполнена' and rw.cd between '01.01.2015' and '31.12.2015'


чтобы получить что то типа (например для row 2015)

year January February March April May June July August September October November December
2015 74 73 89 92 81 91 80 98 87 131 115 123
2 сен 16, 12:51    [19621043]     Ответить | Цитировать Сообщить модератору
 Re: Количество по месяцам и годам (как красиво (запрос) наполнить таблицу данными?)  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
делать подзапросы
sum(case when year(rw.cd)=2015 and month(rw.cd)=1  then 1 else 0 end) as January,

вроде не очень красиво, сам вопрос тоже больше для сводных таблиц Excel, тем не менее

если у двух таблиц сделать одинаковых наименования строк столбцов - можно ли их как то оперативно пересечь с подсчетом количества? в t-sql
2 сен 16, 13:34    [19621256]     Ответить | Цитировать Сообщить модератору
 Re: Количество по месяцам и годам (как красиво (запрос) наполнить таблицу данными?)  [new]
iljy
Member

Откуда:
Сообщений: 8711
ef1,

сначала делаете нужные подсчеты с группировкой по YEAR, MONTH, потом к результату делаете PIVOT по месяцам
2 сен 16, 13:50    [19621321]     Ответить | Цитировать Сообщить модератору
 Re: Количество по месяцам и годам (как красиво (запрос) наполнить таблицу данными?)  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
ясно, спасибо.
наверно действительно лучше не заниматься ерундой, ок
2 сен 16, 13:54    [19621339]     Ответить | Цитировать Сообщить модератору
 Re: Количество по месяцам и годам (как красиво (запрос) наполнить таблицу данными?)  [new]
komrad
Member

Откуда:
Сообщений: 5736
ef1,

примерно так

+
declare @t1 table (dt datetime,ord int,status varchar(20))
insert into @t1 (dt,ord,status)
select '20110126',15,'done' union all
select '20110126',17,'done' union all
select '20110127',18,'new' union all
select '20120101',8,'done' union all
select '20120201',23,'done' union all
select '20130302',19,'done' union all
select '20150101',66,'done' 

--select * from @t1 
;with d (god,mnth,ords) as 
(
select datepart(year,dt),datename(month,dt), count(1)
from @t1 
where status='done'
group by datepart(year,dt),datename(month,dt)
)
select god,[January],[February],[March],[April],[May],[June],[July],[August],[September],[October],[November],[December]
from d
pivot (sum(ords) for mnth in ([January],[February],[March],[April],[May],[June],[July],[August],[September],[October],[November],[December])) q

2 сен 16, 13:58    [19621353]     Ответить | Цитировать Сообщить модератору
 Re: Количество по месяцам и годам (как красиво (запрос) наполнить таблицу данными?)  [new]
ef1
Member

Откуда: Москва
Сообщений: 191
iljy ,komrad
а оказалось не так страшно как я себе представлял! спасибо большое!!!
2 сен 16, 15:57    [19622110]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить