2012-08-17 3 views
0

Цените помочь, если кто-нибудь, дайте мне знать, как для того чтобы достигнуть «PreviousValue» cloumn, как показано ниже в MSAccessПредыдущий рекорд -MS Access

У меня есть записи, сохраненные в таблице, кроме «В целом» различных категорий и на основе ID/Имя/Офис/продукт/Категория сочетание я хочу для того чтобы достигнуть предыдущего столбец значения Копания функции MS Access/эффективного запрос

ID  Name  Office Product Overall Month   Value Previous 
228  Woodlands london Europe Sales  201106   6 0 
228  Woodlands london Europe Sales  201202   3 6 
228  Woodlands london Europe Sales  201207   4 3 
228  Woodlands london Europe Overall 201106   6 0 
228  Woodlands london Europe Overall 201202   3 6 
228  Woodlands london Europe Overall 201207   4 3 
228  Woodlands london Europe Exetion 201202   6 0 
228  Woodlands london UK  Exetion 201202   6 1 
228  Woodlands london UK  Exetion 201106   1 0 
228  Woodlands london Europe Exetion 201207   6 6 
228  Woodlands london Europe Content 201106   6 0 
228  Woodlands london UK  Content 201106   1 0 
228  Woodlands london Europe Content 201202   3 6 
228  Woodlands london UK  Content 201202   1 1 
228  Woodlands london UK  Content 201207   1 1 
228  Woodlands london Europe Content 201207   4 3 

заранее спасибо !!


Результат запроса - Что не как ожидалось из-за TOP1 функции я думаю, правильный выход, как показано на изображении ниже

ID Name  Office Product Category Date  Month ValuePrevious 
228 Investors london Europe Content 01/06/2011 201106 6 0 
228 Investors london Europe Content 23/02/2012 201202 3 6 
228 Investors london Europe Content 01/07/2012 201207 4 6 

enter image description here

+0

Пожалуйста, не размещать фотографии. Даже очень плохо отформатированные данные лучше, чем изображение. Опубликуйте данные, и я могу ответить. – Fionnuala

+0

Я не мог видеть вариант загрузки листа excel – user1268559

+0

Ваши теги говорят MS Access. Откройте стол, вырежьте и вставьте несколько строк в свой пост. Если худшее приходит к худшему, наберите их. – Fionnuala

ответ

0

Вы можете использовать подзапрос для получения предыдущего значения.

SELECT tx.id, 
     tx.name, 
     tx.office, 
     tx.product, 
     tx.overall, 
     tx.month, 
     tx.VALUE, 
     tx.previous, 
     Nz((SELECT TOP 1 [value] 
      FROM tablename t 
      WHERE t.id = tx.id 
        AND t.name = tx.name 
        AND t.office = tx.office 
        AND t.product = tx.product 
        AND t.overall = tx.overall 
        AND t.month < tx.month 
      ORDER BY t.month, rnd(t.id) DESC), 0) AS Prev 
FROM tablename tx 
ORDER BY tx.month; 

Новый запрос на основе измененных, очень редкие, образцы данных

SELECT tz.id, 
     tz.name, 
     tz.office, 
     tz.product, 
     tz.date, 
     tz.month, 
     tz.VALUE, 
     Nz((SELECT TOP 1 [value] 
      FROM tablename t 
      WHERE t.id = tz.id 
        AND t.name = tz.name 
        AND t.office = tz.office 
        AND t.product = tz.product 
        AND t.date < tz.date 
      ORDER BY t.date DESC), 0) AS Prev 
FROM tablename tz 
ORDER BY tz.date; 
+0

Привет, Remou благодарит за вашу быструю помощь. Но я получаю сообщение об ошибке: «В этот подзапрос может быть возвращено не более одной записи» .. Я вставил запрос в свой оригинал post..actually запрашивает 400-500 записей, но после этого дает эту ошибку. – user1268559

+0

В этом случае у вас будет больше дубликатов записей, которые я мог бы подумать. У вас есть уникальный идентификатор на столе? – Fionnuala

+0

нет уникального ID..it's sharepoint поддерживается table..can я отлаживаю каким-то образом, которые являются дубликатами? исправит их – user1268559

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