Используя ES2017, вы должны иметь это как объявление функции
async function foo() {
var response = await $.ajax({url: '...'})
return response;
}
и выполнить его следующим образом.
(async function() {
try {
var result = await foo()
console.log(result)
} catch (e) {}
})()
Или синтаксис Promise
foo().then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
Ваш текущий запрос близок, но я бы предложил несколько незначительных изменений, чтобы получить результат. Если вы хотите «сворачивать» данные с помощью JOINs, вам нужно будет различать, какое значение вы хотите вернуть из TableB
в каждом последующем соединении.
Например, если вы хотите вернуть type=rev
, вам нужно указать конкретный фильтр для этого значения. Затем вы сделаете то же самое с type=revision
. Я также предлагаю использовать LEFT JOIN
для присоединения к TableB
, если у вас нет обоих значений type
для каждого Acc_no
, после чего вы все равно вернете данные.
select
a.data,
a.acc_no,
b.type,
b.amount,
bb.type as type_1,
bb.amount as amount_1
from tablea a
left join tableb b
on a.acc_no = b.obj
and b.type = 'rev'
left join tableb bb
on a.acc_no = bb.obj
and bb.type = 'revision';
Вы также можете получить этот результат с помощью некоторой условной агрегации, тогда вам не обязательно присоединяться к TableB
несколько раз:
select
a.data,
a.acc_no,
max(case when b.type = 'rev' then b.type end) as type,
max(case when b.type = 'rev' then b.Amount end) as Amount,
max(case when b.type = 'revision' then b.type end) as type_1,
max(case when b.type = 'revision' then b.Amount end) as Amount_1
from tablea a
left join tableb b
on a.acc_no = b.obj
group by a.data, a.acc_no
order by a.acc_no;