Questo dovrebbe funzionare per te:
SELECT MyDate, min(DateType) as DateType
FROM (
SELECT mydate - 1 AS MyDate, 2 AS DateType
FROM myTable
WHERE myTable.fkId = @MyFkId;
UNION
SELECT mydate + 1 AS MyDate, 2 AS DateType
FROM myTable
WHERE myTable.fkId = @MyFkId;
UNION ALL
SELECT mydate AS MyDate, 1 AS DateType
FROM myTable
WHERE myTable.fkId = @MyFkId;
) AS myCombinedDateTable
group by MyDate
Nota:ho cambiato il secondo UNION
a un UNION ALL
per prestazioni migliori; l'ultima sottoquery non avrà mai duplicati con le prime due sottoquery, poiché DateType
è sempre 2 per i primi due e 1 per l'ultimo UNION
ed interrogazione.