我正在创建一个 SSRS 报告,其中包含按天分组的订单表。现在,我可以使用 SSRS MAX() 函数轻松获取当天的最大订单值并将其放入组标题中。
但是,我还想获取下此订单的相应客户名称,并将其也放在组标题中。
我们可以假设我的结果集只包含日期、名称和订单值。在 SSRS 2008 中有什么方法可以做到这一点吗?
谢谢
我正在创建一个 SSRS 报告,其中包含按天分组的订单表。现在,我可以使用 SSRS MAX() 函数轻松获取当天的最大订单值并将其放入组标题中。
但是,我还想获取下此订单的相应客户名称,并将其也放在组标题中。
我们可以假设我的结果集只包含日期、名称和订单值。在 SSRS 2008 中有什么方法可以做到这一点吗?
谢谢
用懒惰的方式做,让 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 字段是没有时间组件的纯日期字段。