Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS какое значение для группировки возвращает Fields!FieldName.Value без First()? / 2 сообщений из 2, страница 1 из 1
02.12.2017, 00:07
    #39562910
TJ001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS какое значение для группировки возвращает Fields!FieldName.Value без First()?
Field1Field2F11F12F13F24F25F26
Группировка GroupField1,GroupField2
Что вернет следующее выражение для F1
Код: sql
1.
Fields!Field2.Value


1, 2 или 3? Вернет первое значение, последнее или одно из них, как карты лягут?

Вопрос вот откуда возникает
если
Field1Field2Field3F11100F11200F11300F22400F22500F22600
Группировка только одна GroupField1
Выражение
Код: sql
1.
First(Fields!Field2.Value)/Sum(Fields!Field3.Value)


Есть ли смысл при таких данных использовать First()?
Или можно написать
Код: sql
1.
Fields!Field2.Value/Sum(Fields!Field3.Value)

и результат будет такой же, зато лишней функции не будет?
...
Рейтинг: 0 / 0
05.12.2017, 10:28
    #39564203
TJ001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS какое значение для группировки возвращает Fields!FieldName.Value без First()?
Похоже, для группы Fields!FieldName.Value = First(Fields!FieldName.Value)

Это легко проверить:
Создаем любой датасет, в котором будет несколько групп и столбец с суммами, заполненный беспорядочным образом (с несовпадающими в разных строках данными)
Делаем сортировку по убыванию в колонке Сумма

Добавляем в табликс группы и столбцы
Значение Группа1 и Fields!FieldName.Value внутри нее
Значение Группа2 и Fields!FieldName.Value внутри нее
Значение Группа3 и Fields!FieldName.Value внутри нее

И видим, что внутри каждой группы Fields!FieldName.Value выводит максимальное для этой группы значение, т.е. первое.

Для чистоты эксперимента можно потом сделать First(Fields!FieldName.Value), вместо Fields!FieldName.Value и убедиться, что значение выводится то же самое

Т.е. функцию First() есть смысл использовать только если нужно получить значение из другой области или группировки

заполнение тестовых данных
Код: sql
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.
45.
46.
47.
48.
49.
50.
51.
DROP TABLE IF EXISTS
     #rndt;
CREATE TABLE #rndt
(g1     INT
, g2     INT
, g3     INT
, amount DECIMAL(10, 2)
);
DECLARE @cntr1 INT, @cntr2 INT, @cntr3 INT, @cntr4 INT, @cntr1ub INT, @cntr2ub INT, @cntr3ub INT, @cntr4ub INT, @r1 INT, @r2 INT, @r3 INT;
SET @cntr1 = 0;
WHILE @cntr1 < 100
    BEGIN
        SET @cntr1 = @cntr1 + 1;
        SET @r1 = ROUND(RAND() * 10000, 0);
        SET @cntr2 = 0;
        SET @cntr2ub = ROUND(RAND() * 10, 0) + 1;
        WHILE @cntr2 < @cntr2ub
            BEGIN
                SET @cntr2 = @cntr2 + 1;
                SET @r2 = ROUND(RAND() * 10000, 0);
                SET @cntr3 = 0;
                SET @cntr3ub = ROUND(RAND() * 10, 0) + 1;
                WHILE @cntr3 < @cntr3ub
                    BEGIN
                        SET @cntr3 = @cntr3 + 1;
                        SET @r3 = ROUND(RAND() * 10000, 0);
                        SET @cntr4 = 0;
                        SET @cntr4ub = ROUND(RAND() * 10, 0) + 1;
                        WHILE @cntr4 < @cntr4ub
                            BEGIN
                                SET @cntr4 = @cntr4 + 1;
                                INSERT INTO #rndt
                                       SELECT
                                              @r1
                                            , @r2
                                            , @r3
                                            , ROUND(RAND() * 100000, 2);
                            END;
                    END;
            END;
    END;
SELECT
       g1
     , g2
     , g3
     , amount
FROM   #rndt
ORDER BY
         amount DESC;
DROP TABLE IF EXISTS
     #rndt;



Файлик с отчетом прикладываю
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS какое значение для группировки возвращает Fields!FieldName.Value без First()? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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