查询组件两个字段如何进行联动设置

DataEase 2.10.11社区版本,我想在查询组件中设置月份和公司两个查询框,选择月份后自动把该月份以后未注销的公司名称刷新出来,查询组件中带参数的SQL为:SELECT DISTINCT defdoc.name as 版块,org.name AS 公司名称,corp.enddate 结束日期 FROM org_reportorg org inner join bd_defdoc defdoc on defdoc.pk_defdoc = org.def2 inner join org_corp corp on corp.pk_corp = org.pk_reportorg where org.def1 = ‘1001A510000000000085’ and org.enablestate = 2 and org.sourceorgtype = 1
and $DE_PARAM{corp.enddate >= ‘$[enddate]’ },设置一个查询组件或两个查询组件通过参数进行关联均不能实现,通过富文本中转好像也不行,请教如何实现这种配置。


用查询组件联级设置



这ya样的效果

这个是级联,我要的是选择一个月份,自动筛选出大于等于这个月的数据,需要用传参处理。公司数据表中有这个公司的结束时间,比如一共有100家公司,其中有20家公司结束日期为2023-10月,另外80家结束日期为9999-12,那我如果月份选择2025-07,则公司下拉列表仅显示80家公司,如果月份为2022-01则显示100家公司。这样用户在哪个月份就只能看到该月份以后存在的公司数,然后再选择相应的公司,仪表盘根据查询组件的月份和公司进行数据刷新。请问老师如何处理,谢谢!

这个实现不了的

试了一下,可能通过以下SQL处理月份和公司的关系,再通过级联来处理上下级的关系可以实现。但系统的缺点是月份不能以时间来展示,公司不能以下拉树来展示,否则无法配置级联。
WITH
– 1. 获取所有组织名称(根据实际表名修改)
org AS (
SELECT DISTINCT reportorg.code,reportorg.name,corp.enddate,reportorg.def2 FROM org_reportorg reportorg
inner join org_corp corp on corp.pk_corp = reportorg.pk_reportorg
where reportorg.def1 = ‘1001A510000000000085’ and reportorg.enablestate = 2 and reportorg.sourceorgtype = 1),
– 2. 生成月份序列(从2023-01到当前月)
month_range AS (
SELECT TO_CHAR(ADD_MONTHS(TO_DATE(‘2023-01’, ‘YYYY-MM’), LEVEL - 1), ‘YYYY-MM’) AS month
FROM dual
CONNECT BY LEVEL <= MONTHS_BETWEEN(TRUNC(SYSDATE, ‘MM’), TO_DATE(‘2023-01’, ‘YYYY-MM’)) + 1),
– 3. 组合所有组织和月份
org_month_combinations AS (
SELECT o.code,o.name,o.enddate,m.month,o.def2 FROM org o
CROSS JOIN month_range m)
– 4. 最终查询(按组织分组,月份排序)
SELECT ‘股份’ as 股份,defdoc.name as 版块,comb.code as 公司编码,comb.name as 公司名称,to_char(comb.month) as 会计月
FROM org_month_combinations comb
inner join bd_defdoc defdoc on defdoc.pk_defdoc = comb.def2
where case when comb.enddate >= comb.month then comb.month else ‘’ end is not null
ORDER BY defdoc.name,comb.name,comb.month;