I want resulting rows to be in one row with comma separated values so I applied
rtrim(xmlagg(xmlelement(e, column_name|| ',')).extract('//text()').extract('//text()'),',')
on the resulting rows of the following query
SELECT
TO_DATE('01-04-2012','dd-MM-yyyy') - 1 + rownum AS d
FROM all_objects
WHERE TO_DATE('01-04-2012','dd-MM-yyyy') - 1 + rownum
<= TO_DATE('30-04-2012','dd-MM-yyyy')
MINUS
SELECT TS_DATE
FROM TS_DTL where emp_id=3 and TS_DATE BETWEEN TO_DATE('01-04-2012','dd-MM-yyyy')
AND TO_DATE('30-04-2012','dd-MM-yyyy')
when I do that as follows::
SELECT
rtrim(xmlagg(xmlelement(e, TO_DATE('01-04-2012','dd-MM-yyyy') - 1 + rownum || ','))
.extract('//text()')
.extract('//text()') ,',') AS d
FROM all_objects
WHERE TO_DATE('01-04-2012','dd-MM-yyyy') - 1 + rownum
<= TO_DATE('30-04-2012','dd-MM-yyyy')
MINUS
SELECT
rtrim(xmlagg(xmlelement(e, TS_DATE || ','))
.extract('//text()')
.extract('//text()') ,',')
FROM TS_DTL
WHERE emp_id=3
AND TS_DATE
BETWEEN TO_DATE('01-04-2012','dd-MM-yyyy')
AND TO_DATE('30-04-2012','dd-MM-yyyy')
It does not minus the 2nd query result.
I’d guess it is due to some data formatting issue. Replace the
MINUSwith aUNION ALLand compare the resulting rows.Alternatively use the original select as subselect and in the outer select apply your
xmlaggmagic:)