Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Добрый день!
Ребят, можете подсказать как лучше сделать?
Имеется сервер ms sql 2008, в моей задачи рассчитываются и вносятся данные в более 10 временные таблицы, затем проходят до обработки и выводятся в разные постоянные таблицы.
Необходимо эти 10 таблиц в одну результирующую.
t1
client_id/sum_doh

t2
client_id/sum_rash

t3

client_id/sum_val

...
..
..
Если кратко. то в этих таблицах данные по клиенту, в одной из которых сумма дохода по расчетному обслуживанию, во второй за инкассацию итд,т.е. прекрасно получается ситуация,когда в расчетном периоде у клиента был доход только по нескольким видам обслуживаний.
Получить нужно нечто такое:
client_id / sum_doh/sum_rash/sum_val/.....
1011/10000/150/null(или если null возвращать 0)
10001/null/null/0.5
итд
Если воспользоваться перекрестным запросом над объединением всех таблиц, потеряю ли я данные?или наоборот?
Или как лучше сделать?
11 сен 13, 14:59    [14826562]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
denis_stell
Если воспользоваться перекрестным запросом над объединением всех таблиц, потеряю ли я данные?или наоборот?

Как напишите перекрестный запрос, так и получится

denis_stell
Или как лучше сделать?

Если вы и так делаете UNION таблиц, то зачем еще пивот ?
11 сен 13, 15:21    [14826733]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Glory,

согласен пивот мне в данном случае не нужен.
начну как говорится с меньшего:
2 таблицы
в одной данные
4578 / 1000
7898/150

во второй
4578/1451000
1478/4512
1010/7897

итог:
4578/1000/1451000
7898/150/null
1478/null/4512
1010/null/7897

если делаю так:
select a.clien_id,a.sum_doh,b.sum_rash from #v1 cross join #v2(если без условия уточнения простое декартовое произведение двух таблиц,оно меня как таковое не устаивает,если с условием типа a.client=b.client,то отбирается запись где запись с таким ид есть и в левой и в правой
)
11 сен 13, 16:18    [14827177]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
denis_stell
если делаю так:

Потому что надо делать UNION ALL c GROUP BY
11 сен 13, 16:36    [14827279]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Glory,

Вы имеете ввиду так:
select * from (
 select a.client,a.sum_doh from #v1 
 group by a.client
 union all
 select b.client,b.sum_rash from #v2
 group by b.client
)
11 сен 13, 17:00    [14827452]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
select client, sum(...
 from (
 select client, sum_doh as sum_doh, 0.00 as sum_rash from #v1 
 union all
 select client, 0.00 as sum_doh, b.sum_rash from #v2
) a
 group by a.client
11 сен 13, 17:04    [14827485]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Glory,

разве не получиться результирующая таблица как объединение 2 - ух таблиц?
client_id / sum


P.S. Сильно не пинайте,как говорится изучаю
11 сен 13, 17:04    [14827486]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Glory,

denis_stell

разве не получиться результирующая таблица как объединение 2 - ух таблиц?
client_id / sum


P.S. Сильно не пинайте,как говорится изучаю




Понял,спасибо.
11 сен 13, 17:11    [14827562]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Glory,

в принципе, в таком же роде, я могу все таблицы включить в union all ?
11 сен 13, 17:18    [14827606]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2414
denis_stell
Glory,

в принципе, в таком же роде, я могу все таблицы включить в union all ?



Капитан Очевидность, смотрит на тебя с укоризной
12 сен 13, 09:55    [14829431]     Ответить | Цитировать Сообщить модератору
 Re: объединение множества таблиц, как сделать?  [new]
denis_stell
Member

Откуда:
Сообщений: 255
Glory,
Спасибо за помощь,вопрос закрыт
12 сен 13, 10:36    [14829691]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить