参数注入,查两个数据集的所有数据

来自两个数据库的两个数据集a,b。a是员工填写的计划数据,b是正时系统的真实数据。a数据集中包含人员、产品、产品种类等信息。

想实现:报表中一条信息能看出计划数据和真实数据的对比。

  1. 计划信息显示所有,真实表的数据根据计划信息中的人员、产品种类汇总查询显示。

  2. 1)计划表和真实表中都有的数据全显示。

    2)当计划表中有,真实表中没有的数据,在左侧显示计划表数据,右侧真实数据显示空或者0.

    3)当计划表中没有,真实表中有的数据,在表右侧显示真是表数据,左侧显示计划表为空或者0.

我目前是查询出计划表所有数据,在真实表上写两个参数${人员},${种类},在真实表中写上两个参数注入计划表中的人员和种类所在的单元格。但是这样就只能满足1)和2)

问题:怎么同时满足所有条件。

FineReport yzm187216 发布于 2022-1-11 08:34
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
luojian0323Lv7资深互助
发布于2022-1-11 08:40

我觉得你可以用三个数据集。第一个数据集是维度表,第二个数据集是计划表,第三个数据集是真实数据表

然后三个数据集在报表中依次从左到右展示 ,第二个数据集设置字段过滤,设置关联字段为第一个数据集中的某些字段,第三个也是这样操作。

  • yzm187216 yzm187216(提问者) 这个维度表是相当于中间表吗,可以在设计器中建这个数据集吗
    2022-01-11 09:27 
  • luojian0323 luojian0323 回复 yzm187216(提问者) 是中间表,最好不要在设计器中建内置数据,最好是数据库中的表。
    2022-01-11 10:04 
  • yzm187216 yzm187216(提问者) 回复 luojian0323 两个表不在一个数据库里,还没有中间表嘞
    2022-01-11 13:56 
  • luojian0323 luojian0323 回复 yzm187216(提问者) 那你建一个中间表。
    2022-01-11 14:28 
最佳回答
1
BingChiHanLv5见习互助
发布于2022-1-11 08:53

SELECT A.Date,*,B.Date FROM dbo.C

LEFT JOIN A ON A.Name = C.Name -- 拼接计划

LEFT JOIN B ON B.Name = C.Name  -- 拼接实际

WHERE 1=1

AND C.Name IN(SELECT DISTINCT Name FROM (SELECT Name FROM A UNION SELECT Name FROM B) FName)

AND -- 查询条件

最佳回答
1
Z4u3z1Lv6专家互助
发布于2022-1-11 09:12

select a.*,b.* from a full join b on a.人员=b.人员  AND a.产品=B.产品

WHERE (A.人员='${人员}' AND A.之类='${种类}') or (b.人员='${人员}' AND B.之类='${种类}')

  • yzm187216 yzm187216(提问者) a和b是两个数据库建出来的两个数据集,两个表没有关联关系
    2022-01-11 09:35 
  • Z4u3z1 Z4u3z1 回复 yzm187216(提问者) MYSQL 还是SQL SERVER或者 oracle?
    2022-01-11 09:37 
  • yzm187216 yzm187216(提问者) 回复 Z4u3z1 Oracle,两个数据集是来自不同应用系统的数据库查询
    2022-01-11 09:38 
  • yzm187216 yzm187216(提问者) 回复 Z4u3z1 实际业务数据存在一个系统,计划数据存在于另一个系统,现在想将计划数据和实际数据抽出来做对比
    2022-01-11 09:39 
  • Z4u3z1 Z4u3z1 回复 yzm187216(提问者) https://blog.csdn.net/weixin_34009794/article/details/94199930 oracle的跨库查询 如果真如你所说两个表没有关联关系,那可以放弃了。没关系咋可能比对出计划数据和真实数据
    2022-01-11 09:41 
  • 3关注人数
  • 592浏览人数
  • 最后回答于:2022-1-11 09:12
    请选择关闭问题的原因
    确定 取消
    返回顶部