Sql server 如何加上「;“失踪”;reporting services中列组中的列?
我试图创建一个报告,显示一年中每个月的商品销售数量 我有一个查询,返回每个月销售的商品列表,它看起来像这样:Sql server 如何加上「;“失踪”;reporting services中列组中的列?,sql-server,sql-server-2008,reporting-services,Sql Server,Sql Server 2008,Reporting Services,我试图创建一个报告,显示一年中每个月的商品销售数量 我有一个查询,返回每个月销售的商品列表,它看起来像这样: SELECT Seller.FirstName, Seller.LastName, SellingHistory.Month, SUM(SellingHistory.QuantitySold) FROM SellingHistory JOIN Seller on SellingHistory.SellerId = Seller.SellerId WHERE SellingHistory.
SELECT Seller.FirstName, Seller.LastName, SellingHistory.Month, SUM(SellingHistory.QuantitySold)
FROM SellingHistory JOIN Seller on SellingHistory.SellerId = Seller.SellerId
WHERE SellingHistory.Year = @Year
GOUP BY Seller.FirstName, Seller.LastName, SellingHistory.Month
我要做的是显示一个报告,其中每个月有一列+一个总计列,该列将为每个卖家显示所选月份的销售数量
Seller Name | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Total
我所做的是使用一个矩阵和一个列组(按月分组)来显示现有数据的列,如果我有1月到3月的数据,它将显示前3列和总数。我想做的是始终显示所有列
我曾想过通过在SQL请求中添加缺少的月份来实现这一点,但我发现这有点奇怪,我相信一定有一些“最干净”的解决方案,因为这一定是非常频繁的事情
谢谢
PS:我正在使用SQL Server Express 2008
SELECT Seller.Id,
SUM(CASE WHEN SellingHistory.Month = 'Jan' THEN SellingHistory.QuantitySold END ) AS Jan,
SUM(CASE WHEN SellingHistory.Month = 'Feb' THEN SellingHistory.QuantitySold END ) AS Feb,
...
GROUP BY Seller.Id
您也可以使用PIVOT(双重检查语法,我认为下面的查询是可以的,但我已经有一段时间没有使用transact-sql了):
要在T-SQL中实现这一点,您需要一个
PIVOT
,在页面的中间有一个使用月的示例。好的,那么唯一的方法就是通过SQL实现吗?我认为这可以直接写进报告中。
SELECT Seller.Id, Jan, Feb, ...
FROM ...
PIVOT (SUM(SellingHistory.QuantitySold) FOR SellingHistory.Month IN (
[Jan],[Feb],....)) AS t;