Ok, Here's the script and query (made it generic so I could post it here). The &1 is just the sysDate from the beginning script that is being passed to all the subscripts.
SPOOL /home/user/sql/out/test.&1..txt APPEND
SET TERMOUT OFF
SET TRIMSPOOL ON
SET TRIMOUT ON
SET LINESIZE 1024
SET FEEDBACK OFF
SET COLSEP |
SET PAGESIZE 0
SET TAB OFF
SELECT
TO_CHAR(Table1.DTE_SVC,'mm/dd/yyyy'),
TO_CHAR(Table2.DTE_PAID,'mm/dd/yyyy'),
' ' INDICATOR,
TRIM(BOTH FROM Table1.CDE_STATUS),
TRIM(BOTH FROM Table1.NUM),
TRIM(BOTH FROM Table1.NUM_DTL),
TRIM(BOTH FROM Table1.ID),
TRIM(BOTH FROM Table3.CDE_AID_CATEGORY),
TRIM(BOTH FROM Table3.DSC_AID_CATEGORY),
TRIM(BOTH FROM Table4.CDE_PGM_HEALTH),
TRIM(BOTH FROM Table4.DSC_PGM_HEALTH),
TRIM(BOTH FROM Table1.CDE_REVENUE),
TRIM(BOTH FROM Table1.CDE_1),
TRIM(BOTH FROM Table1.CDE_2),
TRIM(BOTH FROM Table1.CDE_3),
TRIM(BOTH FROM Table1.CDE_4),
TRIM(BOTH FROM Table1.CDE_5),
TRIM(BOTH FROM Table1.CDE_6),
TRIM(BOTH FROM Table1.CDE_7),
TRIM(BOTH FROM Table1.CDE_8),
TRIM(BOTH FROM Table1.CDE_9),
TRIM(BOTH FROM Table1.CDE_10),
TRIM(BOTH FROM Table4.cde_TYPE),
TRIM(BOTH FROM Table4.cde_POS),
TRIM(BOTH FROM Table5.CDE_PROC),
TRIM(BOTH FROM Table1.CDE_PROC_MOD),
TRIM(BOTH FROM Table1.CDE_MOD_2),
TRIM(BOTH FROM Table1.CDE_MOD_3),
TRIM(BOTH FROM Table1.CDE_MOD_4),
TRIM(BOTH FROM Table1.CDE_DRG),
TO_CHAR(Table1.DTE_FIRST_SVC,'mm/dd/yyyy'),
TO_CHAR(Table1.DTE_LAST_SVC,'mm/dd/yyyy'),
TO_CHAR(Table1.DTE_ADMIN,'mm/dd/yyyy'),
TO_CHAR(Table1.DTE_DISCHARGE,'mm/dd/yyyy'),
TRIM(BOTH FROM (Table1.QTY_BILLED)),
' ' FFS_EQUIV_AMT,
(Table1.AMT),
(Table1.ALWD),
(Table1.PAID),
(Table1.CO_PAY),
(Table1.DEDUCT),
(Table1.COINSURE),
TRIM(BOTH FROM Table1.PROV),
TRIM(BOTH FROM Table1.PERFORMING),
TRIM(BOTH FROM Table6.CDE_PROV_SPEC),
TRIM(BOTH FROM Table6.DSC_PROV_SPEC),
TRIM(BOTH FROM Table6.CDE_PROV_TYPE),
TRIM(BOTH FROM Table6.DSC_PROV_TYPE),
TRIM(BOTH FROM Table1.CDE_LOC),
TRIM(BOTH FROM Table1.AGE),
TRIM(BOTH FROM Table7.CDE_SEX),
TRIM(BOTH FROM Table1.DTE_LAST_SVC-Table1.DTE_FIRST_SVC),
TRIM(Table8.CDE_TYPE||Table9.CDE_TYPE),
TRIM(Table8.CDE_HOUR||Table9.CDE_HOUR),
TRIM(Table8.CDE_A_TYPE||Table9.CDE_A_TYPE),
MAX(CASE
WHEN b.num_seq=1
THEN b.CDE_OCCURRENCE
ELSE ''
END),
MAX(CASE
WHEN b.num_seq=1
THEN b.DTE_OCCURRENCE
ELSE NULL
END),
TRIM(BOTH FROM Table1.CDE_STATUS),
TRIM(BOTH FROM Table1.DAYS_COVD),
TRIM(BOTH FROM Table1.ATTACHMENT),
TRIM(BOTH FROM Table1.REFERRING),
TRIM(Table8.CDE_CERT||Table9.CDE_CERT),
TRIM(BOTH FROM Table1.EMERGENCY),
TRIM(BOTH FROM Table1.PREG),
MAX(CASE
WHEN a.num_seq=1
THEN a.cde_PROC_1
ELSE ''
END),
MAX(CASE
WHEN a.num_seq=1
THEN a.dte_Proc_1
ELSE NULL
END),
MAX(CASE
WHEN a.num_seq=2
THEN a.cde_PROC_2
ELSE ''
END),
MAX(CASE
WHEN a.num_seq=2
THEN a.dte_Proc_2
ELSE NULL
END),
MAX(CASE
WHEN a.num_seq=3
THEN a.cde_PROC_3
ELSE ''
END),
MAX(CASE
WHEN a.num_seq=3
THEN a.dte_Proc_3
ELSE NULL
END),
MAX(CASE
WHEN a.num_seq=4
THEN a.cde_PROC_4
ELSE ''
END),
MAX(CASE
WHEN a.num_seq=4
THEN a.dte_Proc_4
ELSE NULL
END),
MAX(CASE
WHEN a.num_seq=5
THEN a.cde_PROC_5
ELSE ''
END),
MAX(CASE
WHEN a.num_seq=5
THEN a.dte_Proc_5
ELSE NULL
END),
MAX(CASE
WHEN a.num_seq=6
THEN a.cde_PROC_6
ELSE ''
END),
MAX(CASE
WHEN a.num_seq=6
THEN a.dte_Proc_6
ELSE NULL
END),
TRIM(BOTH FROM Table1.CDE_EMERG)
FROM
Table1@SERVER2 Table1,
Table2@SERVER2 Table2,
Table3@SERVER2 Table3,
Table4@SERVER2 Table4,
Table5@SERVER2 Table5,
Table6@SERVER2 Table6,
Table7@SERVER2 Table7,
Table8@SERVER2 Table8,
Table9@SERVER2 Table9,
Table10@SERVER2 b,
Table11@SERVER2 Table11,
Table12@SERVER2 a
WHERE
( Table1.SAK=a.SAK(+) )
AND ( b.SAK(+)=Table1.SAK )
AND ( Table1.SAK_PROC=Table5.SAK_PROC(+) )
AND ( Table8.SAK(+)=Table1.SAK)
AND (Table9.SAK(+)=Table1.SAK)
AND ( Table1.SAK_REC=Table7.SAK_REC )
AND ( Table3.R_KEY=Table1.R_KEY )
AND ( Table1.P_KEY=Table6.P_KEY )
AND ( Table4.C_KEY=Table1.C_KEY )
AND ( Table2.P_T_KEY=Table1.P_T_KEY )
AND Table4.CDE_TYPE in ('A','C','H','I','L','O')
AND Table1.SAK_REC=Table11.SAK_REC
and Table2.dte_paid between add_months(sysdate, -36) and sysdate
GROUP BY
Table1.DTE_FIRST_SVC,
Table2.DTE_PAID,
Table1.CDE_DTL_STATUS,
Table1.NUM_ICN,
Table1.NUM_DTL,
Table1.ID,
Table3.CDE_CATEGORY,
Table3.DSC_CATEGORY,
Table4.CDE_PGM_H,
Table4.DSC_PGM_H,
Table1.CDE_REVENUE,
Table1.CDE_1,
Table1.CDE_2,
Table1.CDE_3,
Table1.CDE_4,
Table1.CDE_5,
Table1.CDE_6,
Table1.CDE_7,
Table1.CDE_8,
Table1.CDE_9,
Table1.CDE_10,
Table4.cde_TYPE,
Table4.cde_POS,
Table5.CDE_PROC,
Table1.CDE_PROC_MOD,
Table1.CDE_MOD_2,
Table1.CDE_MOD_3,
Table1.CDE_MOD_4,
Table1.CDE_DRG,
Table1.DTE_FIRST_SVC,
Table1.DTE_LAST_SVC,
Table1.DTE_ADMIN,
Table1.DTE_DIS,
(Table1.QTY),
(Table1.AMT),
(Table1.ALWD),
(Table1.PAID),
(Table1.CO_PAY),
(Table1.DEDUCT),
(Table1.COINSURE),
Table1.PROV,
Table1.PERFORMING,
Table6.CDE_PROV_SPEC,
Table6.DSC_PROV_SPEC,
Table6.CDE_PROV_TYPE,
Table6.DSC_PROV_TYPE,
Table1.CDE_LOC,
Table1.AGE,
Table7.CDE_SEX,
Table1.DTE_LAST_SVC-Table1.DTE_FIRST_SVC,
Table8.CDE_TYPE||Table9.CDE_TYPE,
Table8.CDE_HOUR||Table9.CDE_HOUR,
Table8.CDE_A_TYPE||Table9.CDE_A_TYPE,
Table1.CDE_STATUS_P,
Table1.DAYS_COVD,
Table1.ATTACHMENT,
Table1.REFERRING,
Table8.CDE_CERT||Table9.CDE_CERT,
Table1.EMERGENCY,
Table1.PREG,
Table1.CDE_EMERG;
I guess my problem is that when using the TRIM (any of them that I listed) none of them take off the leading or trailing spaces. I always get the SQL*PLUS formatting issue where it adds the extra spaces to match the length of the column for each field. The fields that are concat'd with the || (Table8.CDE_TYPE||Table9.CDE_TYPE, Table8.CDE_HOUR||Table9.CDE_HOUR, and Table8.CDE_A_TYPE||Table9.CDE_A_TYPE) are producing large amounts of whitespace even though the concat'd records only produce a 1, 2 or 3 digit number.
Where's what coming out in the spool file
12/12/1212|12/12/1212| |X|2299123112345|12 |1234123412| X|random description | | | | | |
I need it to produce the same thing but no extra spaces. So, like this:
12/12/1212|12/12/1212||X|2299123112345|12|1234123412|X|random description||||||
Like I said before, I went to use the concat trick that I've seen elsewhere but it had issues with the GROUP BY clause. From what I can see, there are more fields not being called anywhere else in the query that are in the grp by so it looks like it is needed to produce the correct data. I have about 6 subscipts that are all similar to this and they all have the same issue, Extra whitespace. Two of them even use UNIONs so not sure if the concat trick would work corectly on them.
Any thought?