2016-02-12 116 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