SSRS 2008 Нужно искать имя клиента с наибольшим заказом - PullRequest
1 голос
/ 23 марта 2010

Я создаю отчет SSRS, который содержит таблицу заказов, сгруппированных по дням.Теперь я могу легко получить максимальное значение заказа за день и поместить его в заголовок группы с помощью функции SSRS MAX ().

Однако я также хочу получить соответствующее имя клиента кто разместил этот заказ и поместил его в заголовок группы.

Мы можем предположить, что мой набор результатов просто содержит дату, имя и стоимость заказа.Есть ли способ сделать это в SSRS 2008?

Спасибо

1 Ответ

1 голос
/ 24 марта 2010

Сделайте это ленивым способом, и пусть Sql Server выдаст вам результаты.Например, предположим, что ваш исходный запрос был примерно таким:

SELECT  OrderDate, OrderId, CustomerName, OrderValue
FROM OrderTable
WHERE (OrderDate >= @DateFrom) AND (OrderDate <= @DateTo)

Объедините его с сгруппированными результатами за день, чтобы они отображались в каждой строке:

SELECT DT.OrderDate, DT.OrderId, DT.CustomerName, DT.OrderValue, 
    GT.OrderId AS MaxOrderId, GT.CustomerName AS MaxCustomerName, GT.OrderValue AS MaxOrderValue
FROM 
    (SELECT  OrderDate, OrderId, CustomerName, OrderValue
    FROM OrderTable
    WHERE (OrderDate >= @DateFrom) AND (OrderDate <= @DateTo)) AS DT 
INNER JOIN
    (SELECT  OrderDate, OrderId, CustomerName, OrderValue
    FROM OrderTable AS OrderTable_1
    WHERE (OrderDate >= @DateFrom) AND (OrderDate <= @DateTo) AND (OrderId =
        (SELECT TOP 1 OrderId
        FROM OrderTable AS OrderTable_2
        WHERE (OrderDate = OrderTable_1.OrderDate)
        GROUP BY OrderId
        ORDER BY SUM(OrderValue) DESC))) AS GT ON DT.OrderDate = GT.OrderDate
ORDER BY DT.OrderDate, DT.OrderValue DESC

DT =Подробная таблица

GT = Таблица результатов группы

Порядок максимальных значений для дня теперь добавляется в каждую строку, что позволяет легко включать его в заголовки группы.Очевидно, что если CustomerName происходит из другой таблицы, вам просто нужно объединить эту таблицу в исходном запросе и в запросе OrderTable_1.

В этом запросе предполагается, что поле OrderDate является полем чистой даты без компонента времени,

...