Ступенчатый стол не сортируется - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь создать отчет с пошаговой таблицей, используя построитель отчетов SQL 3.0.Пошаговый отчет содержит группы / устройства / пользователей вместе с соответствующими итогами для каждой группы / устройства / пользователя.

Я хочу, чтобы весь отчет был отсортирован по этим показателям вместе с каждым отдельным шагом, отсортированным таким же образом.

В настоящее время пользователи сортируются по сумме, а не по устройствам или группам.

Есть ли способ сортировки других шагов?

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Вы можете попробовать перейти в область групп строк / столбцов ... затем для каждой имеющейся группы дважды щелкните группу, выберите «Сортировка», а затем добавьте столько полей сортировки, сколько необходимо для информации, содержащейся в этой группе.уровень.

Если к данным применены другие виды сортировки ... например, к таблице / матрице, иногда SSRS может сбить с толку, поэтому, если мое предложение действительно поможет вам с эффектом, которого вы добились, но естьнекоторые проблемы, попробуйте удалить все другие сортировки, которые вы применили к данным в других местах отчета, кроме этих групп ... И я бы начал с самого внутреннего и потренировался, стараясь не повторять поле, находящееся в данных нижней группы.,(если это имеет смысл).


edit:

Итак, предположим, у нас есть отчет для офиса ветеринара, который показывает информацию о клиенте, и мы хотим сгруппировать по personID, petID и visitID.Табликс в целом будет отсортирован по имени человека (или по фамилии, затем по имени ... или как угодно).Тогда ваша первая группа будет группироваться по personID и сортироваться по petName.Вторая, более низкая группа будет группироваться по petID и сортироваться по дате посещения.Третий уровень будет сгруппирован по идентификатору посещения, и ... его не нужно сортировать, кроме как по VisitTime, если он не включен в visitDate.

0 голосов
/ 09 марта 2011

Вы можете просто сделать это в SQL, используя несколько вложенных запросов. Предположим, у вас есть следующие таблицы: транзакция, пользователь, устройство и группа. Таблица транзакций записывает транзакции пользователя на устройстве и имеет поле Сумма для суммирования. Пользователь принадлежит к группе.

Таким образом, вам необходимо сложить сумму для пользователя, для групп и для устройств, используемых в группе, что даст вам SQL, который выглядит следующим образом:

SELECT G.Description AS [Group], D.Description AS Device, U.Description AS UserName, MAX(GT.GroupTotal) AS GroupTotal, MAX(GDT.GroupDeviceTotal) AS GroupDeviceTotal, SUM(T.Amount) AS UserTotal
FROM Transaction AS T
    INNER JOIN User AS U ON L.UserId = F.UserId 
    INNER JOIN Group AS G ON G.GroupId = L.GroupId 
    INNER JOIN Device AS D ON T.DeviceId = L.DeviceId 
    INNER JOIN
        (SELECT GroupId, SUM(Amount) AS GroupTotal
        FROM Transaction 
            INNER JOIN User ON User.UserId = Transaction.UserId
        WHERE (Transaction.TxDate >= '2011-01-01')
        GROUP BY User.GroupId) AS GT ON GT.GroupId = U.GroupId 
    INNER JOIN
        (SELECT GroupId, DeviceId, SUM(Amount) AS GroupDeviceTotal
        FROM Transaction  
            INNER JOIN User ON User.UserId = Transaction.UserId
        WHERE (TxDate >= '2011-01-01')
GROUP BY GroupId, DeviceId) AS GDT ON GDT.GroupId = U.GroupId AND GDT.DeviceId = T.DeviceId
WHERE (T.TxDate >= '2011-01-01')
GROUP BY G.GroupId, D.DeviceId, U.UserId
ORDER BY GroupTotal DESC, GroupDeviceTotal DESC, UserTotal DESC

Обратите внимание, что выражение where, которое вы используете, должно быть одинаковым в основном запросе и каждом вложенном запросе (это бит "WHERE (T.TxDate> = '2011-01-01')").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...