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

Откуда:
Сообщений: 43
Не могу никак придумать как 2 таблицы в одну собрать как мне надо.
Познаний не хватает, а времени читать документацию нет (срочно попросили помочь).

Картинка с другого сайта.

Как оптимальным образом получить табличку 4?
19 апр 12, 18:36    [12441620]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
KeeperRU
Как оптимальным образом получить табличку 4?
А вы то как делаете?
19 апр 12, 18:39    [12441627]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
прочитайте про функции coalesce() или isnull()
19 апр 12, 18:39    [12441630]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
KeeperRU
Member

Откуда:
Сообщений: 43
Ну условно говоря запрос сейчас такой:

SELECT t1.acc, t2.acc, t1.debet, t2.credit

FROM t1
full join t2
on (t1.acc = t2.acc) 


Как перейти от этих t1.acc, t2.acc к единому полю?
19 апр 12, 18:42    [12441643]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
KeeperRU
Member

Откуда:
Сообщений: 43
Prolog
прочитайте про функции coalesce() или isnull()


Про ISNULL знаю, но так нагляднее))

Можно пример как использовать coalesce()? В принципе понял что можно и CASE использовать..
Но как лучше всего написать, если у меня таких полей помимо "Счет" много?
19 апр 12, 18:45    [12441663]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
KeeperRU
Как перейти от этих t1.acc, t2.acc к единому полю?

например, так
19 апр 12, 18:45    [12441666]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
KeeperRU
Member

Откуда:
Сообщений: 43
Prolog
KeeperRU
Как перейти от этих t1.acc, t2.acc к единому полю?

например, так


Да очень смешно,

Получается так надо?

SELECT COALESCE(t1.acc, t2.acc), t1.debet, t2.credit

FROM t1
full join t2
on (t1.acc = t2.acc)


Спасибо за помощь
19 апр 12, 18:48    [12441682]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
но так нагляднее:
SELECT acc = COALESCE(t1.acc, t2.acc), t1.debet, t2.credit
FROM t1
full join t2
on (t1.acc = t2.acc)
19 апр 12, 18:50    [12441695]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать Full Join  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
deprecated syntax detected :)
acc = COALESCE(t1.acc, t2.acc)


COALESCE(t1.acc, t2.acc) as acc
19 апр 12, 20:47    [12442174]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить