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

Откуда:
Сообщений: 169
Есть таблица по остаткам. В разрезе даты и склада в ней хранятся даные начального остатка, расхода, прихода, конечного остатка.
Хочу сделать следующее: сравнить все конечные остатки с начальными остатками следующего дня и вывести позиции по которым остаток не сходится.
Подскажите как?
14 июл 11, 14:27    [10973872]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Ну вып хоть скрипт таблицы и пример заполнения данными привелип штоле...
14 июл 11, 14:31    [10973904]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Пожалуйста:

select quantityE from c_Stock
where dateApplied = '20110109'

select quantityS from c_Stock
where dateApplied = '20110110'
14 июл 11, 14:39    [10973973]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169


К сообщению приложен файл. Размер - 15Kb
14 июл 11, 14:39    [10973976]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
pkarklin
Member

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


Вы не можете реализовать это в виде условий JOINа?
14 июл 11, 14:42    [10974010]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Суть сравнения в том, чтобы к примеру на dataapplied = 2011-01-10 по продукту 4607026012169 начальный остаток quantityS был равен конечному остатку quantityE на dataapplied = 2011-01-09.
Хочу сравнить таки образов всю таблицу и вывести те записи по которым quantityS не равен quantityE
14 июл 11, 14:44    [10974035]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Да, JOIN здесь может подойти, только как его применить.
14 июл 11, 14:45    [10974047]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
r18romik,

Наверное, его надо написать? Переведя вот это вот на T-SQL:

автор
чтобы к примеру на dataapplied = 2011-01-10 по продукту 4607026012169 начальный остаток quantityS был равен конечному остатку quantityE на dataapplied = 2011-01-09.
14 июл 11, 14:48    [10974084]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Собственно для этого и написал сюда....
14 июл 11, 14:52    [10974135]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
_ч_
Member

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

не проверял работает или нет. Идея надеюсь будет понятна
select * from c_Stock
inner join c_Stock as c_Stock2 on c_Stock.productId = c_Stock2.productId and c_Stock.dataapplied = Dateadd(day, 1, c_Stock2.dataapplied)
where c_Stock.quantityS <> c_Stock2.quantityE
14 июл 11, 14:52    [10974136]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Спасибо.
Да идея понятно.
Пошаманю сейчас.
14 июл 11, 14:55    [10974170]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Как-то благодарить или плюсики ставить на этой форуме можно?
14 июл 11, 14:56    [10974178]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
Сделал так. На выходе получил кучу не понятных записей.
Как вывести примитивно обе строки с разными датами, чтобы было видно что по ним есть расхождение по полям quantityS quantityE

select * from c_Stock as O
INNER JOIN c_Stock as O2 on O.productId = O2.productId
and O.distribId = O2.distribId
and O.locId = O2.locId
and O.dateApplied = Dateadd(day, 1, O2.dateApplied)
where O.quantityS <> O2.quantityE
order by O.distribId,O.dateApplied
14 июл 11, 15:29    [10974505]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
r18romik
Member

Откуда:
Сообщений: 169
select * from c_Stock as O
INNER JOIN c_Stock as O2 on O.productId = O2.productId
and O.distribId = O2.distribId
and O.locId = O2.locId
and O.dateApplied = Dateadd(day, 1, O2.dateApplied)
where O.quantityS <> O2.quantityE
order by O.distribId,O.dateApplied

И поля сравниваются в разрезе одной даты, а не в разных.
14 июл 11, 15:40    [10974588]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данные в таблице.  [new]
_ч_
Member

Откуда:
Сообщений: 1446
r18romik
select * from c_Stock as O
INNER JOIN c_Stock as O2 on O.productId = O2.productId
and O.distribId = O2.distribId
and O.locId = O2.locId
and O.dateApplied = Dateadd(day, 1, O2.dateApplied)
where O.quantityS <> O2.quantityE
order by O.distribId,O.dateApplied

И поля сравниваются в разрезе одной даты, а не в разных.


Как же не разных, когда (выделено)
>На выходе получил кучу не понятных записей.
Выведете те столбцы, которые вам нужны
14 июл 11, 15:49    [10974657]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить