как сложить три столбца по общему идентефикатору SQL
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
как сложить три столбца по общему идентефикатору SQL - 2007-09-04 08:22:28.013333
|
|
|
Translyator
Сообщений: 359
Оценки: 0
Присоединился: 2007-08-17 12:32:54.773333
|
MS sql 2005 нужно сложить три столбца из разных таблиц по общему полю у всех трёх таблиц есть общиё столбец JOB_ID примерно так (т.1 job_id , amount) у всех таблиц такие столбцы
|
|
|
RE: как сложить три столбца по общему идентефикатору SQL - 2007-09-04 10:25:43.500000
|
|
|
Pupkin-Zade
Сообщений: 9398
Оценки: 1489
Присоединился: 2004-03-10 13:54:16
|
схематично Seelct a + b + c from a, b, c where job_id1=job_id2 and job_id2=job_id3
|
|
|
RE: как сложить три столбца по общему идентефикатору SQL - 2007-09-04 11:12:32.773333
|
|
|
Translyator
Сообщений: 359
Оценки: 0
Присоединился: 2007-08-17 12:32:54.773333
|
quote:
ORIGINAL: Pupkin-Zade схематично Seelct a + b + c from a, b, c where job_id1=job_id2 and job_id2=job_id3 это я уже пробовал результат нетот табл.1 есть поля с job_id (35, 35, 43, 43) они разные в т.2 job_id (35, 35, 29, 29) и т.3 job_id (35, 35) а в результате у меня получается 8 полей с непонятными значениями
|
|
|
RE: как сложить три столбца по общему идентефикатору SQL - 2007-09-04 14:34:37.596666
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
quote:
а в результате у меня получается 8 полей с непонятными значениями почему же непонятными, все ясно у тебя в трех таблицах есть по 2 записи с job_id=35, сервак не может определить какие конкретно записи ему нужно складывать, поэтому он вычисляет все возможные суммы, число которых 8, если тебе нужны конкретные суммы по конкретным записям тебе необходимо ввести дополнительный идентификатор записи, а если тебе нужна общая сумма, то сначала суммируй записи с одинаковым job_id в каждой таблице а затем суммируй результаты по job_id, сделать это можно в 2005 например так: declare @temp table(job_id int, summ int)
insert into @temp (job_id,summ) (select distinct job_id, sum(a) from a group by job_id)
insert into @temp (job_id,summ) (select distinct job_id, sum(b) from b group by job_id)
insert into @temp (job_id,summ) (select distinct job_id, sum(c) from c group by job_id)
select distinct job_id, sum(summ) from @temp group by job_id
|
|
|
RE: как сложить три столбца по общему идентефикатору SQL - 2007-09-04 14:39:28.573333
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
а вообще по-моему есть косяк с самой базой, amount имхо нужно хранить в одной таблице
|
|
|
RE: как сложить три столбца по общему идентефикатору SQL - 2007-09-05 09:01:17.333333
|
|
|
Translyator
Сообщений: 359
Оценки: 0
Присоединился: 2007-08-17 12:32:54.773333
|
job_id amount t.#1 amount t.#2 amount t.#3 total (35) 100 (35) 20 null 120 null (40) 300 (40) 150 450 null (40) 120 (40) 80 200 где () это job_id в каждой таблице и относительно одного джоба может быть несколько значений amount
|
|
|
|
|