-
-
emilyxly 小试身手Lv3
发表于2018-9-14 15:43
悬赏1
已解决
需求
主题表存储数据为:
用户 调入部门 调出部门
01 A1 A2
02 A2 A3
03 A1 A3
04 A3 A1
想得到以下固定报表
部门 调入人数 调出人数
A1 2 1
A2 1 1
A3 1 2
现在是将第一列部门浮动表元浮动到第九列,第十列增加一列部门浮动表元,浮动到最后一列,设置为隐藏,与第一列的值保持一致,但如何保持一致联动,没有找到方法,希望能够帮助解决?

下面为示例:
加入存在如下表结构:user_id(用户id),dept_in(调入部门),dept_out(调出部门)可以通过如下sql实现:
select dept ,max(user_in) as user_in,max(user_out) as user_out from (
select dept_in as dept,count(distinct(userid)) as user_in ,0 as user_out from dm_dept group by dept_in
union all
select dept_out as dept ,0 as user_in,count(distinct(userid)) as user_out from dm_dept group by dept_out
) group by dept
结果如下:

sql数据源方式:
将sql放在如下所示位置,选择对应的数据源,起一个 数据集代号,测试可以查看结果集

测试成功后,保存,然后进行如下设置:

计算后,可以得到预期内容

5个回答
本帖最后由 tangmq 于 2018-9-14 16:13 编辑
如果数据比较整齐,可以试试我这个方法,分别做两个不同的浮动,并对浮动进行计数,并且隐藏其中一个浮动列。如下图所示,第一列按照调入部门浮动分组;第三列按照调出部门浮动分组;两组浮动分别计数,隐藏第三列就行
关于两个浮动如何保持一致:可以对两个浮动设置一个相同的排序依据,都升序或者降序,是不是可以了
tangmq 发表于 2018-9-14 16:10
如果数据比较整齐,可以试试我这个方法,分别做两个不同的浮动,并对浮动进行计数,并且隐藏其中一个浮动列 ...
除了排序没有别的办法么?如果中间有哪个部门,比如A2只有调入,没有调出,数据错开就都错了吧
emilyxly 发表于 2018-9-14 16:16
除了排序没有别的办法么?如果中间有哪个部门,比如A2只有调入,没有调出,数据错开就都错了吧 ...
部门设计一个维表, 报表浮动那里设置 按照维度补齐,这样就能确保 部门是完整的不会错开了
tangmq 发表于 2018-9-14 16:24
部门设计一个维表, 报表浮动那里设置 按照维度补齐,这样就能确保 部门是完整的不会错开了 ...
部门有1000多个,实际上每个月存在调动情况的不是特别多,可有别的办法让两个浮动表元联动呢,比如第二个浮动表元,设置过滤条件部门ID=Self.leftdimcell.value
你好,该问题也可以通过sql数据源的方式实现呢,系统支持sql数据源
下面为示例:
加入存在如下表结构:user_id(用户id),dept_in(调入部门),dept_out(调出部门)可以通过如下sql实现:
select dept ,max(user_in) as user_in,max(user_out) as user_out from (
select dept_in as dept,count(distinct(userid)) as user_in ,0 as user_out from dm_dept group by dept_in
union all
select dept_out as dept ,0 as user_in,count(distinct(userid)) as user_out from dm_dept group by dept_out
) group by dept
结果如下:
sql数据源方式:
将sql放在如下所示位置,选择对应的数据源,起一个 数据集代号,测试可以查看结果集
测试成功后,保存,然后进行如下设置:
计算后,可以得到预期内容