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

получить такую?
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37319948
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32sasha, матрица заполняется данными которые запрос ваш возвращает. меняйте запрос так, чтобы возвращал то что нужно
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37320576
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно как можно организовать так запрос чтобы получилась такая матрица?
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37320582
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
RS2005 Матрица и ее заполнение
    #37321433
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я разобраться не могу как можно сделать нужную мне матрицу :-(
Выкладываю RDL файлик со студии
В нем код и матрица, к базе не привязан.
Помогите пожалуйста.
Заранее спасибо.
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37321850
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
RS2005 Матрица и ее заполнение
    #37323501
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

Вопрос, а можно в подытог вывести среднюю по столбцу?
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37323538
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл уточнить, считать по тем строкам в которых значение > 0
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37323550
32sashaВопрос, а можно в подытог вывести среднюю по столбцу?
Забыл уточнить, считать по тем строкам в которых значение > 0
Можно. Окончательный Screen в студию!
З.Ы. Screen можно по-быстрому сделать в Excel
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37323619
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, уже сам разобрался. Вместо 0 в запросе вернул null a в этом случаи avg null игнорирует.
Считает среднее уже правильно.
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37341127
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжении темы.
Как можно создать такую таблицу?
Пытался разными способами, что-то не выходит.
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37341376
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
RS2005 Матрица и ее заполнение
    #37341949
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
RS2005 Матрица и ее заполнение
    #37343799
32sasha,
Че-то никак не получается
...
Рейтинг: 0 / 0
RS2005 Матрица и ее заполнение
    #37344011
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вышел такой вариант
Код: 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
RS2005 Матрица и ее заполнение
    #37344014
32sasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже разобрался, спасибо Начинающий SQL 2008
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005 Матрица и ее заполнение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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