Su problema probablemente se deba a lo que ha incluido en el grupo por campo.
ST_UNION es una función agregada, lo que significa que se está disolviendo en función de lo que especifique como GROUPparámetro.
Esto es lo que ingresó:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;
De acuerdo con esto, está agrupando por su fid, que probablemente sea un identificador único, y también por boundaryshape, que es la geometría. El problema con esto es que es muy poco probable que las características que comparten una ID única tengan geometrías idénticas. Por lo tanto, ST_Unionprobablemente terminará con algo como lo siguiente:
Input:
fid boundaryshape
1 11
1 12
1 11
1 13
2 12
2 13
2 12
3 5
3 2
3 4
Output:
fid boundaryshape
1 (11 + 11)
1 12
1 13
2 (12 + 12)
2 13
3 2
3 4
3 5
En este caso, solo debe disolverse en función de su identificador único, a menos que en realidad tenga varias geometrías duplicadas con las mismas fid, de las que está tratando de deshacerse. Sin embargo, incluso en esa situación, solo debe agruparse en función de fid, y la unión se encargará de la duplicación de la geometría.
Intentaría lo siguiente:
SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;
Eso debería darle el resultado deseado de disolver todas las características basadas en el atributo común fid.
Aquí está el documento de ayuda en el sitio PostGIS: ST_Union
Vea el primer ejemplo que figura en la parte inferior y observe que no incluye la geometría en el grupo por sección.