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

Откуда:
Сообщений: 5
Здравствуйте, буду благодарен, если кто нибудь поможет с запросом t sql.
Есть два набора данных, предположительно одинаковых, но ввиду изменений в бизнес-логике в новой версии фактические данные немного отличаются.

В старой версии:
Id LateDays Amount
1 0 1000
2 55 2500
3 0 500
4 10 3000
5 0 700

В новой версии:
Id LateDays Amount
2 55 2500
3 2 500
4 10 3000
5 0 900
6 0 2000

Необходимо написать запрос, который проведет сверку этих данных и выдаст все несоответствия в таком виде:
Id1 LateDays1 Amount1 Id2 LateDays2 Amount2
1 0 1000 NULL NULL NULL
3 0 500 3 2 500
5 0 700 5 0 900
NULL NULL NULL 6 0 2000
20 ноя 15, 12:23    [18446560]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
Glory
Member

Откуда:
Сообщений: 104751
AceRM
буду благодарен, если кто нибудь поможет с запросом t sql.

А вас что удерживает от написания этого запрсоа ?

Сообщение было отредактировано: 20 ноя 15, 12:26
20 ноя 15, 12:25    [18446589]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
AceRM,

FULL JOIN
20 ноя 15, 12:27    [18446605]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
AceRM
Member

Откуда:
Сообщений: 5
create table #t1 (ID1 int, LateDays int, Amount1 int)

insert #t1(ID1, LateDays, Amount1) values(1, 0, 1000)
insert #t1(ID1, LateDays, Amount1) values(2, 55, 2500)
insert #t1(ID1, LateDays, Amount1) values(3, 0, 500)
insert #t1(ID1, LateDays, Amount1) values(4, 10, 3000)
insert #t1(ID1, LateDays, Amount1) values(5, 0, 700)

create table #t2 (ID2 int, LateDays int, Amount2 int)

insert #t2(ID2, LateDays, Amount2) values(2, 55, 2500)
insert #t2(ID2, LateDays, Amount2) values(3, 2, 500)
insert #t2(ID2, LateDays, Amount2) values(4, 10, 3000)
insert #t2(ID2, LateDays, Amount2) values(5, 0, 900)
insert #t2(ID2, LateDays, Amount2) values(6, 0, 2000)

select * from #t1
FULL OUTER JOIN #t2
ON #t1.ID1 = #t2.ID2

сцепить две таблицы вышло. а как выцепить только нужные строки, как в заголовке? Подскажите, пожалуйста.
20 ноя 15, 16:15    [18448464]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
Glory
Member

Откуда:
Сообщений: 104751
AceRM
а как выцепить только нужные строки, как в заголовке?

Теперь изучить конструкцию WHERE
20 ноя 15, 16:18    [18448484]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
AceRM
Member

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

Как вытягивать строки или столбцы с помощью конструкции Where я понял, как объединить две таблицы тоже.
Но вот одновременно все это в одном запросе реализовать не выходит. Можете хотя бы структуру запроса написать, а с синтаксисом я как нибудь разберусь.
20 ноя 15, 18:22    [18449312]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2566
WHERE
(#t1.LateDays IS NOT NULL AND #t2.LateDays IS NULL) OR
(#t1.LateDays IS NULL AND #t2.LateDays IS NOT NULL) OR
(#t1.LateDays <> #t2.LateDays)                      OR
(#t1.Amount1 IS NOT NULL AND #t2.Amount2 IS NULL)   OR
(#t1.Amount1 IS NULL AND #t2.Amount2 IS NOT NULL)   OR
(#t1.Amount1 <> #t2.Amount2)
20 ноя 15, 18:56    [18449496]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
AceRM
Member

Откуда:
Сообщений: 5
Сделал, тему можно удалять.
20 ноя 15, 19:04    [18449536]     Ответить | Цитировать Сообщить модератору
 Re: запрос на сверку (tsql)  [new]
AceRM
Member

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

Спасибо.
20 ноя 15, 19:06    [18449547]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить