2016-02-11 34 views
0

顶部SSRS显示列如果我有一个返回值的报告可以说8列:上的相互

Col1 Col1 Col3 Col4 Col5 Col6 Col7 Col8 

有没有办法通过它来显示这样的:

Col1 Col2 Col3 Col4 
Col5 Col6 Col7 Col8 

总列数将是可变的,但我只想在每一行显示4。每列应只返回一个值。

+0

你说的“列的总数将变量”是指地图的“列”到外地标有“列”?什么会导致列数有所不同?当我在SSRS中进行报告时,通常列数是固定的,行数也是变化的。 –

+0

它基本上是一个列组。例如,如果我创建开始日期和结束日期作为参数,并且想要从每天返回活动,如果我在1/1/16到1/10/16之间放置,则会有10列,每个日期一列。如果我把1/1到1/20放在20列。 – user1873604

回答

1

如果每个日期只显示1个字段,则可以更改SQL查询以将每个字段映射到所需的列和行。

一旦你计算出行和列的值,你可以使用这些值将数据分组到正确的位置(在我的例子中是total_sales)。

DECLARE @data TABLE 
(
    sale_date DATE, 
    total_sales INT 
) 

INSERT INTO @data (sale_date, total_sales) 
SELECT '2/1/2016', 100 
UNION SELECT '2/2/2016', 450 
UNION SELECT '2/3/2016', 175 
UNION SELECT '2/4/2016', 900 
UNION SELECT '2/5/2016', 150 
UNION SELECT '2/6/2016', 425 
UNION SELECT '2/7/2016', 300 
UNION SELECT '2/8/2016', 550 

DECLARE @date_from DATE = '2/1/2016' 
    , @date_to DATE = '2/10/2016' 

SELECT d.total_sales AS 'total_sales' 
    , CONVERT(DATE, d.sale_date) AS 'sale_date' 
    , (DATEDIFF(DAY, @date_from, d.sale_date) - DATEDIFF(DAY,@date_from, d.sale_date) % 4)/4 AS 'Row' 
    , DATEDIFF(DAY, @date_from, d.sale_date) % 4 AS 'column' 
FROM @data d 
WHERE d.sale_date >= @date_from 
    AND d.sale_date <= @date_to 

有时候创建一个新矩阵来显示这些数据比试图手动改变旧矩阵中的分组要容易一些。

  • 添加一个新的矩阵
  • 点在你的数据在新的矩阵集
  • 地图的“TOTAL_SALES”来标记“数据”在右下角
  • 野外地图的“行”到在左下角
  • 场打上“行”在右上角
+0

完美!谢谢! – user1873604