在报表生成器中创建“宾果卡”

问题描述 投票:0回答:1

我有一个列出订单号的 SSMS 查询。在报表生成器中,我们希望这些订单号在列中向右扩展,在行中向下扩展,以类似于宾果游戏板。当订单发货后,该订单(单元格)将变成绿色。如何使用跨列和向下的一个单元格来填充报告页面?

我一直没能弄清楚这个问题。

reporting-services ssms reportbuilder
1个回答
0
投票

我在这里假设您有一个简单的订单号列表和某种表示已完成/已发货的状态。

我创建了一个简单的表变量用作示例数据,其中包含以下内容...

DECLARE @Orders TABLE(OrderID int IDENTITY(1000,1), OrderStatus INT)
INSERT INTO @Orders(OrderStatus) VALUES (1), (0), (0), (1), (1), (1), (0), (1), (0), (0), (0), (0), (1), (1), (1), (0), (0), (1), (1), (0), (0), (1)

SELECT * FROM @Orders

这给了我们以下内容(截断)

从这里您可以使用自己的订单表。

接下来我们需要计算行数和列数。为此,我设置了一个变量来给出所需列的数量,您可以根据需要进行设置,甚至可以将其作为报告参数从报告中传递,目前它将是静态的。

所以完整的查询如下所示

DECLARE @Orders TABLE(OrderID int IDENTITY(1000,1), OrderStatus INT)
INSERT INTO @Orders(OrderStatus) VALUES (1), (0), (0), (1), (1), (1), (0), (1), (0), (0), (0), (0), (1), (1), (1), (0), (0), (1), (1), (0), (0), (1)

DECLARE @MaxCols int = 5

SELECT 
    OrderID,
    OrderStatus,
    ColNum = (ROW_NUMBER() OVER(ORDER BY OrderID)-1)%@MaxCols, 
    RowNum = (ROW_NUMBER() OVER(ORDER BY OrderID)-1)/@MaxCols
    FROM @Orders

这给了我们这个(截断)

我们的报告中没有,我们需要做的就是添加一个数据集,上面的数据集作为数据集查询,然后添加一个矩阵控件。

将 ColNum 拖至列占位符,将 RowNum 拖至行占位符,将 OrderID 拖至数据占位符。

接下来,如果 OrderStatus = 1,我们可以将背景设置为绿色。

最后我们可以根据需要删除标题行和列。

这是一个 1 分钟的 GIF,展示了构建报告的过程。 (如果需要,右键单击并在新窗口中打开以使其更大)

© www.soinside.com 2019 - 2024. All rights reserved.