SSRS在组的每个值中排在前n行

时间:2016-02-10 22:45:29

标签: reporting-services ssrs-2008-r2

我是SSRS的新手。我需要根据每个国家/地区列列组的销售情况显示前3个产品,在Tablix中。所以报告应该如下所示(这些国家/地区应该显示为产品和总销售额的列。不幸的是,我是无法按预期输入以下内容)

UK

Prod1 100
Prod3 70
Prod4 50

西班牙

Prod2 80
产品55
Prod4 30

意大利

Prod3 45
产品20
Prod4 15

在列组中应用的前N个过滤器不起作用,因为它似乎完全忽略它。前N不能在表级应用,因为它只显示所有国家的前三名。数据来自多维数据集。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

这是您应该在选择查询中解决的问题,这不应该太难。

我不知道您的数据库布局,所以我将尝试用一个简单的例子来解释它:

  

销售表

     
      
  • SalesId
  •   
  • 客户ID
  •   
  • 日期
  •   
  •   
     

SalesDetails表

     
      
  • SalesDetailId
  •   
  • SalesId
  •   
  • 产品
  •   
  • 数量
  •   
     

<强> CustomersTable

     
      
  • 客户ID
  •   
  • 国家
  •   
  • 名称
  •   
SELECT DISTINCT(c.Country), q.Product, q.Quantity
FROM Customers c
JOIN (SELECT c1.Country, d1.Product, SUM(d1.Quantity) as Quantity
    FROM SalesDetails d1
    JOIN Sales s1 ON s1.SalesId = d1.SalesId
    JOIN Customer c1 ON c1.CustomerId = s1.CustomerId
    GROUP BY d1.Product, c1.Country) q ON q.Country = c.Country
WHERE q.Product IN (SELECT TOP 3 d2.Product
    FROM SalesDetails d2
    JOIN Sales s2 ON s2.SalesId = d2.SalesId
    JOIN Customer c2 ON c2.CustomerId = s2.CustomerId
    WHERE c2.Country = c.Contry
    GROUP BY d2.Product, c2.Country
    ORDER BY SUM(d2.Quantity) DESC)
ORDER BY c.Country

我希望这对您有用,如果您分享您的实际数据库布局,我愿意根据您的实例更新我的示例。