Проблема в том, что вы хотите что-то, чего у вас нет :-) Вместо того, чтобы думать с точки зрения функции, которая возвращает значение, напишите себе функцию, которая принимает другую функцию как аргумент и вызывает его, когда данные доступны.
function ExecuteQuery(query, callback){
$.post("sql.php", { "query": query },
function(data){ callback(data); },
"json");
}
Теперь, когда вы вызываете эту функцию, вы передаете ей функцию, которая может принять ответ сервера и что-то с ним сделать.
ExecuteQuery("whatever", function(results) {
// do something with "results"
});