【发布时间】:2015-04-29 23:12:53
【问题描述】:
我需要制作一份 ssrs 报告,根据他们的花费来显示最好和最差的客户。在我的报告中,我想在一张图表中表示排名前 1 位和排名最低的客户之间的差距。我的问题是我不可能在同一个数据集/查询中获取这些值。 这是我的查询结果(见下面的代码)。我想,也许联合全部或其他东西,只从一个查询中得到相同的结果。或者有没有更简单的方法,例如Visual Studio 来表示这些值。可能是前 N 个、后 N 个过滤器?如果是这样,请告诉我一种方法或“最佳实践”,因为我还没有弄清楚。谢谢。
代码:
SELECT DISTINCT TOP 1
dimcustomer.FirstName ,
SUM(FactInternetSales.OrderQuantity * UnitPrice)
FROM DimCustomer
INNER JOIN FactInternetSales ON FactInternetSales.CustomerKey = DimCustomer.CustomerKey
GROUP BY FirstName
ORDER BY SUM(FactInternetSales.OrderQuantity * UnitPrice) DESC
SELECT DISTINCT TOP 1
dimcustomer.FirstName ,
SUM(FactInternetSales.SalesAmount)
FROM DimCustomer
INNER JOIN FactInternetSales ON FactInternetSales.CustomerKey = DimCustomer.CustomerKey
GROUP BY FirstName
ORDER BY SUM(FactInternetSales.SalesAmount) DESC
两个结果集:
FirstName | SalesAmount
Morgan 145044,5816
------------------------
FirstName | SalesAmount
Dave 3.99
【问题讨论】:
-
为什么 UNION 不适合你?
-
SQL Server 的哪个版本?
-
我会坚持使用 SQL 解决方案 - SSRS 过滤、表达式等可能无法满足此要求。
标签: sql tsql reporting-services