.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Text.RegularExpressions;
using System.Linq;
					
public class Program
{
	public static void Main()
	{
		string simplequery=@" select c.id,person_id,c.customer_no,c.status,p.first_name,p.last_name,p.dob as DateOfBirth
						from customer c 
						inner join person p on p.id=c.person_id";
		string query=@" select c.id,person_id,c.customer_no,c.status,p.first_name,p.last_name,p.dob as DateOfBirth,concat(p.first_name,' ',p.last_name) as fullName
						from customer c 
						inner join person p on p.id=c.person_id";
		string[] IgnoredFields = new string[]{"id", "person_id","DateOfBirth"};
		
		 query = Regex.Replace(query, @"\t|\n|\r", ""); // remove new line character

            var reg=new Regex(@"(?is)SELECT(.*?)(?<!\w*"")FROM(?!\w*?"")(.*?)(?=WHERE|ORDER|$)");
            var columns=reg.Match(query).Groups[1].Value.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
            var fieldsSubString = String.Join(",", columns); // taking string in between select and from keyword

            fieldsSubString=Regex.Replace(fieldsSubString, @"(\(|[\s]?(concat\(|min\(|max\(|count\())(.*?)(\)(.*?)([\s|as\s]+))", ""); //remove manipulated columns
            var commaSeperatedFields=fieldsSubString.Trim(',').Replace(",,", ","); // remove unwanted commas 
            var fieldsWithAlias=commaSeperatedFields.Split(','); 
		    var fields=fieldsWithAlias.Select(x=>(x.Contains(".")?x.Split('.')[1]:x));
		    fields=fields.Select(x=>(x.Contains(" as ")?x.Split(new string[] { " as " }, StringSplitOptions.None)[1]:x));
            var remains = fields.Except(IgnoredFields);
		
		var customQuery=@"select "+String.Join(",",remains)+" from ("+query+") xc2ty" ;
		Console.WriteLine(customQuery);
	}
}
;