Por partes
Seguramente no te salgan datos por culpa de que no me he molestado en tener en consideración las fechas nulas. Tendrías que ajustar los "where"s individuales para que las fechas nulas las tome como "fechas 0".
Neftalí tiene razón, y dado que tendrás que distribuir un ejecutable, siempre puedes crear el campo, si no existe, al iniciar el programa. (Y rellenarlo, para ello seguro que sirve la select que he puesto yo, sin el where final y teniendo en cuenta la posibilidad de los nulos, de esta forma la select solamente la usas una vez, para cargar los datos en el campo [que otra forma sí que no sé])
Edito y añado:
Yo tengo esto mismo en un programa, justo después de establecer la conexión (lo que tengo justo después es la llamada al procedimiento, lógicamente)
Código Delphi
[-]
procedure TDataModule1.AñadirCampoX;
var
q: TSqlQuery;
begin
q := TsqlQuery.Create(Self);
try
q.SQLConnection := Conec; try
q.Sql.Add('select CampoX From Tabla1');
q.Open;
except
q.Sql.Add('ALTER TABLE Tabla1 ADD COLUMN CampoX tipo_dato');
q.ExecSQL;
end;
finally
q.Free;
end;
end;
En tu caso debes añadir como rellenar el campo después de crearlo.
Saludos