注明:页面上table是动态列,第一列是下拉框,IREPORT里显示的顺序要和页面列的顺序已经第一列下拉框里使用数据顺序一致。由于IREPORT里有默认排序,分别是按照首字母升序和降序,所以利用LPAD作填充函数,将基础表的排序字段填充成固定长度,再连接查询字段,最后在IREPORT里利用特殊字符截取,完成排序。
with rowTemp as
(
SELECT RC.*, MAX(LENGTH(TO_CHAR(RC.SORT_SEQ))) OVER() AS SEQ_MAX_LEN
FROM REF_CODE RC
WHERE RC.IND_REC_STATUS = 'A'
AND RC.CODE_TYPE = 'SITR_VIIMRVESSH_LAUNCH'),
colTemp as
(SELECT RC.*, MAX(LENGTH(TO_CHAR(RC.CODE_KEY))) OVER() AS SEQ_MAX_LEN
FROM REF_CODE RC
WHERE RC.IND_REC_STATUS = 'A'
AND RC.CODE_TYPE = 'SITR_VIIMRVESSH_VESSEL_TYPE'
),
CDATA AS
(SELECT *
from SitRep_VII_Mr_Ves_Sh sh
where sh.SR_MASTER_ID = 1000040848
and sh.SR_TREE_ID = 10130
and sh.IND_REC_STATUS = 'A'),
CDATATTL AS
(SELECT *
from SitRep_VII_Mr_Ves_Sh_STTL sh
where sh.SR_MASTER_ID = 1000040848
and sh.SR_TREE_ID = 10130
and sh.IND_REC_STATUS = 'A')
SELECT TEAM_MARINE, TYPE_VES, NUM_VES_DAY
FROM (select LPAD(rowTemp.SORT_SEQ,
MAX(LENGTH(TO_CHAR(rowTemp.SORT_SEQ))) OVER(),
'0') || '_' || sh.TEAM_MARINE AS TEAM_MARINE,
LPAD(colTemp.CODE_KEY,
MAX(LENGTH(TO_CHAR(colTemp.CODE_KEY))) OVER(),
'0') || '_' || sh.TYPE_VES AS TYPE_VES,
NUM_VES_DAY
from CDATA sh, rowTemp, colTemp
where colTemp.CODE_DESCN = sh.type_ves
and sh.team_marine = rowTemp.Code_Descn
union all
select (CASE
WHEN TEAM_MARINE = 'Daily' then
'990_Daily'
WHEN TEAM_MARINE = 'Monthly to-date' THEN
'991_Monthly to-date'
WHEN TEAM_MARINE = 'Yearly to-date' THEN
'992_Yearly to-date'
END) AS TEAM_MARINE,
LPAD(colTemp.CODE_KEY,
MAX(LENGTH(TO_CHAR(colTemp.CODE_KEY))) OVER(),
'0') || '_' || ttl.TYPE_VES AS TYPE_VES,
(CASE
WHEN TEAM_MARINE = 'Daily' then
NUM_VES_DAY
WHEN TEAM_MARINE = 'Monthly to-date' THEN
NUM_VES_TDY_THIS_MTH
WHEN TEAM_MARINE = 'Yearly to-date' THEN
NUM_VES_TDY_THIS_YEAR
END) AS NUM_VES_DAY
from CDATATTL ttl, colTemp
where colTemp.CODE_DESCN = ttl.type_ves
union
select '990_Daily' as TEAM_MARINE,
LPAD(colTemp.CODE_KEY, colTemp.SEQ_MAX_LEN, '0') || '_' ||
sh.TYPE_VES as TYPE_VES,
sum(NUM_VES_DAY) as NUM_VES_DAY
from CDATA sh, colTemp
WHERE colTemp.CODE_DESCN = sh.type_ves
GROUP BY colTemp.CODE_KEY, colTemp.SEQ_MAX_LEN, sh.TYPE_VES
union
select '991_Monthly to-date',
LPAD(colTemp.CODE_KEY,
MAX(LENGTH(TO_CHAR(colTemp.CODE_KEY))) OVER(),
'0') || '_Other',
(SELECT NUM_VES_TDY_THIS_MTH FROM CDATATTL
WHERE CDATATTL.type_ves = 'Other'
AND TEAM_MARINE = 'Monthly to-date') AS NUM_VES_DAY
from colTemp
where colTemp.Code_Descn = 'Other'
union
select '992_Yearly to-date',
LPAD(colTemp.CODE_KEY,
MAX(LENGTH(TO_CHAR(colTemp.CODE_KEY))) OVER(),
'0') || '_Other',
(SELECT NUM_VES_TDY_THIS_YEAR FROM CDATATTL
WHERE CDATATTL.type_ves = 'Other'
AND TEAM_MARINE = 'Yearly to-date') AS NUM_VES_DAY
from colTemp
where colTemp.Code_Descn = 'Other')
ORDER BY TEAM_MARINE, TYPE_VES
Ireport截取$V{TEAM_MARINE}.substring($V{TEAM_MARINE}.indexOf("_")+1)
Ireport交叉报表按照数据库表头行排序
猜你喜欢
转载自youcp999.iteye.com/blog/2339702
今日推荐
周排行