2016-02-12 76 views
0

我新的BIRT的,我想我的问题是很容易的,但我不能看到如何实现我的目标......BIRT报表,SQL

的任务是建立在不同的法院报告其请求中包含有关法院雇员的不同信息。 DataSetRow[“COURT”]代表报告的标题,它根据员工法院而变化,通常按字母顺序更改标题,这取决于我得到的结果和请求该信息的法院。我需要让它依赖于需要报告的用户。为此,我需要USER_IDHR的PERSONAL_ID列匹配,因此DataSetRow[“COURT”]应该成为COURT列所具有的相同编号。我不知道如何定义这为用户...

报表参数: DATA_FORMUSER_ID

有数据库中的两个重要表:

USERS:这包含USER_ID列和PERSONAL_ID列。

HR:我需要相同的PERSONAL_ID和C_COURT。

SELECT 

H.PERSONAL_ID, 
SURNAME||' '||NAME||' '||SNAME AS NAME, 
DECODE_UNI (H.T_COURT, H.C_COURT) AS COURT, 
DECODE_UNI (HA.T_COURT, HA.C_COURT) AS C_COURT, 
TO_CHAR (TO_DATE(BIRTH_DATE, 'yyyymmdd'),'yyyy') AS BIRTH_DATE, 
DECODE_UNI (HA.T_POSITION, HA.C_POSITION) AS POSITION, 
DECODE_UNI (HA.T_DEPARTMENT, HA.C_DEPARTMENT) AS DEPARTMENT, 
DECODE_UNI (HW.T_AWARD_TYPE, HW.C_AWARD_TYPE) AS AWARD_TYPE, 
TO_CHAR (HW.AWARD_DATE, 'dd.mm.yyyy') AS AWARD_DATE, 
HW.AWARD_DESC, 
U.PERSONAL_ID AS PERSONAL_USER 

FROM 

HR H, HR_APPOINTMENT HA, HR_AWARD HW, USERS U 

WHERE 

H.PERSONAL_ID = HA.PERSONAL_ID 
AND H.PERSONAL_ID = HW.PERSONAL_ID 
AND HA.ACTIVE = 1 
AND H.C_STATE = 1 
AND HA.STATUS_LAST = 1 
AND H.REC_DATE <= TO_DATE (?, 'dd.mm.yyyy') 
AND USER_ID = ? 

预先感谢您!

回答

0

这是复杂的,而无需整个画面回答,但像你描述它似乎是一个加入的情况下,在查询丢失:

AND H.PERSONAL_ID=U.PERSONAL_ID 
+0

谢谢你,我已经想通了这一点:我只是创建了两个数据集。 – alecsia