我有一个表格如下:
我想合并和居中的S/No1.0和2.0只,并显示到SSRS报告,其余的行保持不变,有没有办法做到这一点?
结果将像下面的第二个图像。
方法1:不对DataSet进行真正的更改。
将带有标题的父行组添加到当前Tablix中。将分组设置为这样的表达式(假设s/no
来自名为serialnumber
的字段
=CINT(Fields.SerialNumber.Value)
在这里,我们只需将S/NO转换成一个整数,这样1.0和1.1都返回1
现在,每组行都有一个标题行。
可以合并标题行中的单元格,并将表达式设置为
=FIRST(Fields!Description.Value)
您可能必须强制数据集中的数据顺序,以确保1.0总是在1.1之前,等等。
方法2:将组名添加到数据集中
注意:这是为SQL Server编写的,而不是MySQL,但如果需要,应该很容易翻译
如果这不起作用,您可以将组标头添加到dataset查询的新列中,然后对其进行分组。数据集查询将如下所示...
(我复制了您的数据以显示其工作状态)
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
这将产生以下输出
所以现在您可以只对groupname字段进行分组,然后按照前面方法中所述进行合并。