使用iReports连接字段和连接表

时间:2016-09-22 11:50:23

标签: sql-server jasper-reports concatenation

我尝试连接一个表中的两个字段和另一个表中的另外两个字段,并使用连接值作为主键将表连接在一起。

由于主键与示例5不同的人相关联,因此每个人需要一个唯一值,将策略编号与dep代码连接起来。

以下是如何使用MSSQL运行查询的示例(我没有包含完整代码 - 只是一个示例)。



Alter table [beneficiary] add [Unique] varchar(max)
Update [beneficiary] Set [Unique] =concat([t1.ms_fk],[t1.dep_fk])

Alter table [tsf_claim] add [Unique] varchar(max)
Update [tsf_claim] Set [Unique1] =concat([t5.ms_fk],[t5.dep_fk])

LEFT JOIN [mipbi_dbo.td_beneficiary]  t5 ON t1.[Unique]  = t5.[Unique1]




我需要在iReports中包含上面的内容作为最后的左连接,我不知道如何在iReports中创建额外的字段。另请注意,我的iReports是一个非常旧的版本(3.7.1)



SELECT t1.scheme_fk,t1.ms_fk,t1.dep_fk,t1.pr_fk,t1.tariff_fk,t1.icd10_fk,t1.claimed_amount,t1.benefit_amount,t1.auth_fk,t1.units,t1.paid_date,
       t1.claim_date,t1.claim_code,t1.ref_pr_fk,t1.note,t1.cheque_datetime,t1.suspend_until,t1.dr_mem,t1.suspended,
       t2.mem_num,t2.xref_num,
       t3.icd10_pk,t3.icd10_descr,
       t4.claim_code,t4.description,
       t5.initials,t5.surname,

FROM mipst_dbo.tsf_claim as t1

LEFT JOIN mipst_dbo.tsf_memxref     t2 ON t1. ms_fk 	= t2.mem_num
LEFT JOIN mipbi_dbo.td_icd10        t3 ON t1.icd10_fk 	= t3.icd10_pk
LEFT JOIN mipst_dbo.tsd_ccdesc	    t4 ON t1.claim_code = t4.claim_code::integer
LEFT JOIN mipbi_dbo.td_beneficiary  t5 ON t1.ms_fk      = t5.ms_pk

WHERE    t1.scheme_fk = '75'
	
GROUP BY t1.scheme_fk,t1.ms_fk,t1.dep_fk,t1.pr_fk,t1.tariff_fk,t1.icd10_fk,t1.claimed_amount,t1.benefit_amount,t1.auth_fk,t1.units,t1.paid_date,
       t1.claim_date,t1.claim_code,t1.ref_pr_fk,t1.note,t1.cheque_datetime,t1.suspend_until,t1.dr_mem,t1.suspended,
       t2.mem_num,t2.xref_num,
       t3.icd10_pk,t3.icd10_descr,
       t4.claim_code,t4.description,
       t5.initials,t5.surname




通过添加左连接' LEFT JOIN mipbi_dbo.td_beneficiary t5 ON t1.ms_fk = t5.ms_pk'它不是根据从属代码添加人名。它只是加入线。

简而言之,策略编号链接到具有依赖代码的不同人员,因此在加入信息时,应该将第1个dep1链接到第二个表中的dep 1,并使用正确的名称和姓氏等。

在表1中,dep 1可以说10行,所以使用当前代码,它将在10行上添加策略号的所有信息,而不仅仅是dep 1的信息。

如果上述内容已明确定义或您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我只能通过

来解决查询问题



SELECT t1.scheme_fk,t1.ms_fk,t1.dep_fk,t1.pr_fk,t1.tariff_fk,t1.icd10_fk,t1.claimed_amount,t1.benefit_amount,t1.auth_fk,t1.units,t1.paid_date,
       t1.claim_date,t1.claim_code,t1.ref_pr_fk,t1.note,t1.cheque_datetime,t1.suspend_until,t1.dr_mem,t1.suspended,
       t2.mem_num,t2.xref_num,
       t3.icd10_pk,t3.icd10_descr,
       t4.claim_code,t4.description,t4.scheme_code,
       t5.ms_pk,t5.dep_fk,t5.initials,t5.surname,
       t6.narration,t6.key

FROM mipst_dbo.tsf_claim as t1

LEFT JOIN mipst_dbo.tsf_memxref     t2 ON t1. ms_fk 	= t2.mem_num
LEFT JOIN mipbi_dbo.td_icd10        t3 ON t1.icd10_fk 	= t3.icd10_pk
LEFT JOIN mipst_dbo.tsd_ccdesc	    t4 ON t1.claim_code = t4.claim_code::integer
LEFT JOIN mipbi_dbo.td_beneficiary  t5 ON t1.ms_fk      = t5.ms_pk 
LEFT JOIN mipst_dbo.tsf_note	    t6 ON t1.note       = t6.key

WHERE    t1.scheme_fk = '28' and
	     t4.scheme_code = '28' and
         t1.ms_fk = t5.ms_pk AND 
         t1.dep_fk =t5.dep_fk
    
	
GROUP BY t1.scheme_fk,t1.ms_fk,t1.dep_fk,t1.pr_fk,t1.tariff_fk,t1.icd10_fk,t1.claimed_amount,t1.benefit_amount,t1.auth_fk,t1.units,t1.paid_date,
       t1.claim_date,t1.claim_code,t1.ref_pr_fk,t1.note,t1.cheque_datetime,t1.suspend_until,t1.dr_mem,t1.suspended,
       t2.mem_num,t2.xref_num,
       t3.icd10_pk,t3.icd10_descr,
       t4.claim_code,t4.description,t4.scheme_code,
       t5.ms_pk,t5.dep_fk,t5.initials,t5.surname,
       t6.narration,t6.key




更新where子句。