我是SSRS的新手。我需要根据每个国家/地区列列组的销售情况显示前3个产品,在Tablix中。所以报告应该如下所示(这些国家/地区应该显示为产品和总销售额的列。不幸的是,我是无法按预期输入以下内容)
Prod1 100
Prod3 70
Prod4 50
Prod2 80
产品55
Prod4 30
Prod3 45
产品20
Prod4 15
在列组中应用的前N个过滤器不起作用,因为它似乎完全忽略它。前N不能在表级应用,因为它只显示所有国家的前三名。数据来自多维数据集。
非常感谢任何帮助
答案 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
我希望这对您有用,如果您分享您的实际数据库布局,我愿意根据您的实例更新我的示例。