Мы пытаемся ранжировать колонку счетов и хотим только первую доставку счетов-фактур между частями счетов-фактур.SQL Query: как использовать столбец Timestamp среди рангов Значения столбца
То есть в этой колонке у нас есть несколько счетов-фактур. Мы хотели бы выбрать эту группу счетов-фактур среди рангов рангов, которые состоят из самой ранней отметки времени.
Природа TimeStamp Колонка:
Сервер тип временной метки данных SQL не имеет ничего общего со временем или даты, это просто двоичное число, чтобы указать столбец sequence.The метка записывается и увеличивается каждый раз запись добавлена.
Мы пытались следующий запрос:
select *
from
(select
myrank = rank() over (partition by a.SalesOrder order by c.Invoice),
c.Invoice, c.TimeStamp
from
OrderDetail a
left join
OrderMaster b on a.SalesOrder = b.SalesOrder
left join
InvoiceDetail c on a.SalesOrder = c.SalesOrder
and a.SalesOrderLine = c.SalesOrderLine
where
a.SalesOrder = '218438'
and c.LineType = '1'
and b.OrderStatus = '9') z
Образец данных:
myrank | SalesOrder | SalesOrderLine |Invoice | TimeStamp
1 218438 8 207964 0x0000000048CD8CD4
2 218438 1 207965 0x0000000048CD8CD5
2 218438 2 207965 0x0000000048CD8CD6
2 218438 3 207965 0x0000000048CD8CD7
2 218438 4 207965 0x0000000048CD8CD8
2 218438 5 207965 0x0000000048CD8CD9
2 218438 6 207965 0x0000000048CD8CDA
2 218438 7 207965 0x0000000048CD8CDB
Ожидаемые данные:
запись должна быть причисляют первого счета отгрузки и первый Добавлена запись о основа временной отметки Что должно быть о utput Если я выбираю 2 в качестве ранга
myrank | SalesOrder | SalesOrderLine |Invoice | TimeStamp
1 218438 8 207964 0x0000000048CD8CD4
Заранее благодарен!
Как насчет определения таблицы в качестве отправной точки? Поскольку мы догадываемся о том, что вы пытаетесь сделать здесь. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
Фактически тип данных «timestamp» также изменяется каждый раз, когда вы обновляете запись. Это означает решение для параллелизма путем управления версиями. Когда 2 процесса пытаются изменить одну и ту же запись, один из них проиграет, потому что их временная метка больше не совпадает с той, что записана в записи. – Igor
'Столбец временной метки записывается и увеличивается при каждом добавлении записи '- если это то, что вы ищете, чтобы вы могли идентифицировать первую запись, добавленную в последовательности, вы должны добавить столбец' identity', а не 'timestamp' колонка. Это будет sql-сервер, увеличенный для каждой новой записи, а затем значение не будет изменено. – Igor