如何合并和居中 SQL/SSRS 报告中的特定行?

How to merge and center for certain row in SQL/SSRS report?

我有一个 table 如下:

我只想合并和居中 S/No 1.0 和 2.0,并显示到 SSRS 报告,其余行保持不变,有什么办法吗?

结果会像下面的第二张图。

方法 1: 数据集没有真正的变化。

将带有 header 的 parent 行组添加到当前的 tablix。将分组设置为表达式(假设 S/No 来自名为 SerialNumber

的字段
=CINT(Fields.SerialNumber.Value)

所以这里我们只是将 S/No 转换为一个整数,所以 1.0 和 1.1 都是 return 1

现在每组行都有 header 行。

您可以合并 header 行中的单元格并将表达式设置为

=FIRST(Fields!Description.Value)

您可能必须强制数据集中的数据顺序以确保 1.0 始终在 1.1 之前等。

方法 2:将组名添加到数据集中

注意:这是为 SQL 服务器而不是 MySQL 编写的,但如果需要的话应该很容易翻译

如果这不起作用,那么您可以将组 header 添加到数据集查询的新列中,然后仅对其进行分组。数据集查询看起来像这样...

(我已经复制了您的数据以证明它有效)

DECLARE @myTable TABLE (SerialNumber decimal (5,1), Description varchar(50), UOM varchar(50), rate decimal (10,2))
INSERT INTO @myTable VALUES
(1.0, 'Warehouse Charges', NULL, NULL),
(1.1, 'Storage in pallet', 'perpallet per month or part thereof', 15.84),
(2.0, 'Handling', NULL, NULL),
(2.1, 'Unstuffing - Palletised', 'per pallet', 5.00),
(2.2, 'De-palletised', 'per palett', 5.00)

SELECT * FROM @myTable

    SELECT 
        b.Description as GroupName, a.* 
        FROM @myTable a 
          JOIN (SELECT SerialNumber, Description FROM @myTable WHERE CAST(SerialNumber AS INT) = SerialNumber) b -- headers only
            ON CAST(a.SerialNumber AS INT) = b.SerialNumber 
        WHERE a.SerialNumber != b.SerialNumber

这会产生以下输出

所以现在您可以只对组名字段进行分组,然后按照前面的方法进行合并。