Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005 Матрица и ее заполнение / 16 сообщений из 16, страница 1 из 1
22.06.2011, 12:38
    #37319775
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Создаю отчет для RS2005 в VS2005.
Как можно из такой матрицы

получить такую?
...
Рейтинг: 0 / 0
22.06.2011, 13:42
    #37319948
Vitaly86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
32sasha, матрица заполняется данными которые запрос ваш возвращает. меняйте запрос так, чтобы возвращал то что нужно
...
Рейтинг: 0 / 0
22.06.2011, 18:01
    #37320576
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Интересно как можно организовать так запрос чтобы получилась такая матрица?
...
Рейтинг: 0 / 0
22.06.2011, 18:06
    #37320582
RS2005 Матрица и ее заполнение
32sasha,

Давайте сюда заполненные тестовые данные, которые выводятся на Screen`e,
что-то типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
declare @t table (Parent varchar( 50 ), Child varchar( 50 ))
insert @t
 select 'Depart 1','Podrazdel 1_1' union all select 'Depart 1','Podrazdel 1_2' union all select 'Depart 2','Podrazdel 2_1' union all
 select 'Depart 2','Podrazdel 2_2' union all select 'Podrazdel 1_1','Otdel 1_1' union all select 'Podrazdel 1_1','Otdel 1_2' 

select * from @t
...
Рейтинг: 0 / 0
23.06.2011, 11:35
    #37321433
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Что-то я разобраться не могу как можно сделать нужную мне матрицу :-(
Выкладываю RDL файлик со студии
В нем код и матрица, к базе не привязан.
Помогите пожалуйста.
Заранее спасибо.
...
Рейтинг: 0 / 0
23.06.2011, 14:05
    #37321850
RS2005 Матрица и ее заполнение
32sasha,
а зачем RDL прикладывать?
Достаточно было select , который я из этого RDL скопировал...

В общем так, если изначальный dataset такой:
Код: plaintext
1.
select  100  ID,  1  dt union all select  200 , 1  union all select  203 , 0  union all select  205 , 0  union all select  225 , 0  union all select  235 , 1 
union all select  251 , 1  union all select  255 , 1  union all select  600 , 0  union all select  800 , 1 
ID dt 1001200120302050225023512511255160008001

То можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
-- Создаем дополнительную таблицу
declare @t table (id_row int, dt decimal( 19 , 4 ), id_col int)

;with cte as (
select 	 100 	ID,	 1  dt union all
select 	 200 	,	 1 	union all
select 	 203 	,	 0 	union all
select 	 205 	,	 0 	union all
select 	 225 	,	 0 	union all
select 	 235 	,	 1 	union all
select 	 251 	,	 1 	union all
select 	 255 	,	 1 	union all
select 	 600 	,	 0 	union all
select 	 800 	,	 1 
)
insert @t select id [id_row], dt, id [id_col] from cte

insert @t
 select t1.id_row, t1.dt, t2.id_row
 from @t t1
 cross join @t t2
 where t1.id_row > t2.id_row

select * from @t

Результат:
...
Рейтинг: 0 / 0
24.06.2011, 13:03
    #37323501
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Спасибо!

Вопрос, а можно в подытог вывести среднюю по столбцу?
...
Рейтинг: 0 / 0
24.06.2011, 13:16
    #37323538
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Забыл уточнить, считать по тем строкам в которых значение > 0
...
Рейтинг: 0 / 0
24.06.2011, 13:22
    #37323550
RS2005 Матрица и ее заполнение
32sashaВопрос, а можно в подытог вывести среднюю по столбцу?
Забыл уточнить, считать по тем строкам в которых значение > 0
Можно. Окончательный Screen в студию!
З.Ы. Screen можно по-быстрому сделать в Excel
...
Рейтинг: 0 / 0
24.06.2011, 14:00
    #37323619
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Спасибо, уже сам разобрался. Вместо 0 в запросе вернул null a в этом случаи avg null игнорирует.
Считает среднее уже правильно.
...
Рейтинг: 0 / 0
07.07.2011, 13:29
    #37341127
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
В продолжении темы.
Как можно создать такую таблицу?
Пытался разными способами, что-то не выходит.
...
Рейтинг: 0 / 0
07.07.2011, 15:03
    #37341376
RS2005 Матрица и ее заполнение
32sasha, попробуем...

Давайте сюда начальные данные типа такого select`a
Код: plaintext
1.
select  100  ID,  1  dt union all select  200 , 1  union all select  203 , 0  union all select  205 , 0  union all select  225 , 0  union all select  235 , 1 
union all select  251 , 1  union all select  255 , 1  union all select  600 , 0  union all select  800 , 1 
...
Рейтинг: 0 / 0
07.07.2011, 18:35
    #37341949
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
declare @t table (ID_1 int, ID_2 int, SR decimal( 18 ,  6 )) 


declare @t1 table (id_1 int, id_2 int, SR decimal( 19 , 4 ))
insert @t1
select	 100 	 ID_1,	 100 	ID_2,	NULL	SR	union all
select 	 200 	,	 200 	,	NULL		union all
select 	 250 	,	 250 	,	NULL		union all
select 	 300 	,	 300 	,	NULL		union all
select 	 330 	,	 330 	,	NULL		union all
select 	 350 	,	 350 	,	 1 		union all
select 	 380 	,	 380 	,	NULL		union all
select 	 381 	,	 381 	,	NULL		union all
select 	 382 	,	 382 	,	 1 		union all
select 	 384 	,	 384 	,	NULL		union all
select 	 386 	,	 386 	,	 1 		union all
select 	 387 	,	 387 	,	 1 		union all
select 	 388 	,	 388 	,	NULL		union all
select 	 389 	,	 389 	,	 1 		union all
select 	 391 	,	 391 	,	NULL		union all
select 	 392 	,	 392 	,	NULL		union all
select 	 393 	,	 393 	,	NULL		union all
select 	 394 	,	 394 	,	 0 . 4 		union all
select 	 395 	,	 395 	,	NULL		union all
select 	 396 	,	 396 	,	NULL		union all
select 	 400 	,	 400 	,	 1 		union all
select 	 430 	,	 430 	,	NULL		union all
select 	 450 	,	 450 	,	 0 . 3 		union all
select 	 480 	,	 480 	,	NULL		union all
select 	 500 	,	 500 	,	 0 . 5 		union all
select 	 600 	,	 600 	,	- 0 . 1 		union all
select 	 700 	,	 700 	,	NULL		union all
select 	 800 	,	 800 	,	- 0 . 3 		

insert @t
select * from @t1 

insert @t
 select t1.id_1, t2.ID_1, t1.Sr

 from @t1 as  t1
 cross join @t1 as t2
 where t1.id_1 > t2.id_1

select * from @t
...
Рейтинг: 0 / 0
08.07.2011, 16:42
    #37343799
RS2005 Матрица и ее заполнение
32sasha,
Че-то никак не получается
...
Рейтинг: 0 / 0
08.07.2011, 18:35
    #37344011
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Вышел такой вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
--insert @t
--select * from @t1 

insert @t
 select t1.id_1, t2.ID_1, (select avg(d.Sr) from @t1 as d where d.id_1 <= t1.id_1 and d.id_2 > t2.ID_1 )


 from @t1 as  t1
 cross join @t1 as t2
 where t1.id_1 > t2.id_1

select * from @t
...
Рейтинг: 0 / 0
08.07.2011, 18:36
    #37344014
32sasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS2005 Матрица и ее заполнение
Уже разобрался, спасибо Начинающий SQL 2008
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005 Матрица и ее заполнение / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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