У меня есть две таблицы, которые нужно объединить, а затем результат нескольких строк с тем же crb_pi_id из таблицы2, объединит и вернется как отдельные строки. возможно? Я использовал этот результат в отчете для печати.
Спасибо заранее.
таблица1:
crb_pi_id,name,tel_no
1,john,1111111
2,paul,2222222
таблица2:
crb_pd_id,crb_pi_id,account_name,amount
1,1,salary,500
2,1,utilities,800
3,2,transportation,300
результат должен
name,salary,utilities,trasportation
john,500,800,0
paul,0,0,300
не уверен, что вы действительно можете сделать это с прямым sql в стороне от использования курсора, а переменной temp присваиваются значения каждого значения ячейки последовательно. или если вы можете использовать язык более высокого уровня, вы можете использовать php-комбинацию implode() и строку concat в массиве из вашего запроса.
отредактируйте 1: oh неважно... вопрос изменился сразу после того, как я отправил свой ответ haha
edit 2: возможно, вам нужно что-то вроде этого? (непроверенный псевдо)
select
t1.name,
case when (t2.crb_pi = t1.crb_pi) and (t2.account_name = 'salary') then t2.amount else 0 end as 'salary'
case when (t2.crb_pi = t1.crb_pi) and (t2.account_name = 'utilities') then t2.amount else 0 end as 'utilities'
case when (t2.crb_pi = t1.crb_pi) and (t2.account_name = 'transportation') then t2.amount else 0 end as 'transportation'
from table1 t1
left join table2 t2
on t2.crb_pi = t1.crb_pi
select a.name, a.tel_no, sum(b.amount) as totamount
from table1 a left outer join table2 b on a.crb_pi_id = b.crb_pi_id
group by a.name, a.tel_no
Вам нужно будет указать все поля из таблицы1, которые вы укажете в выборе в заявлении группы
Здесь вы можете использовать предложение, а затем группировать результаты соответственно.
select t1.name 'name', t2.amount 'salary',
CASE WHEN t2.crb_pi_id=t1.crb_pi_id and t2.crb_pd_id=2 then t2.amount ELSE 0 END 'utilities',
CASE WHEN t2.crb_pi_id=t1.crb_pi_id and t2.crb_pd_id=3 then t2.amount ELSE 0 END 'trans'
into #t3
from #t1 t1 inner join #t2 t2 on t1.crb_pi_id=t2.crb_pi_id
select name, max(salary), max(utilities), max(trans)
from t3
group by name