2013-11-13 4 views
0

Ну, у меня есть проблемы с созданием запроса для получения текущей инвентаризации из таблицы, которая содержит данные, таким образом: ID, Склад, даты, StockSQL инвентаризации с историей

То, что я хотел бы получить в текущая информация о запасах, датированная последней сменой запасов.

Например:

1, A, 2013-01-01, 1 
1, A, 2013-01-02, 2 
1, A, 2013-01-03, 4 
1, A, 2013-01-05, 1 
1, B, 2013-01-01, 1 
1, B, 2013-01-02, 2 
1, B, 2013-01-03, 4 
2, B, 2013-01-01, 1 
2, B, 2013-01-02, 2 
2, B, 2013-01-03, 4 

И как результат я хотел бы:

1, A, 2013-01-05, 1 
1, B, 2013-01-03, 4 
2, B, 2013-01-03, 4 

Для каждого ID последней фондовой информации для каждого склада.

ответ

1

Эта версия все еще работает, если у вас есть или будет получить другие столбцы, а также, без необходимости добавлять новые строки с TOP, сортировка и т.д. :)

select * 
from TableName t1 
where t1.Date = 
     (select max(t2.Date) 
     from TableName t2 
     where t2.Id = t1.id and t2.Warehouse = t1.WareHouse) 
+0

Ваше решение работает. Другие два не делают, может быть, из-за Pervasive SQL-специфики. – Alesito

0
SELECT t1.ID, t1.Warehouse, t1.Date, Stock 
FROM TestTable t1 
JOIN 
(
    SELECT ID, Warehouse, MAX(Date) [Date] 
    FROM TestTable 
    GROUP BY ID, Warehouse 
) t2 ON t1.ID = t2.ID 
    AND t1.Warehouse = t2.Warehouse 
    AND t1.Date = t2.Date 
ORDER BY ID, Warehouse 
+0

Ваши имена таблиц несовместимы, а именно: «Бар» и «Тест-таблица». – Edper

+1

Мои плохие ... утра: P –

Смежные вопросы