2012-02-23 2 views
0

В таблице SQL Server Express 2005 есть itemId,ItemName,price,ItemCount,date столбцов с несколькими строками, введенными каждый месяц.Последняя запись SQL Server 2005 последний месяц

Мне нужно, чтобы получить одну единственную строку для каждого последнего itemId,ItemName,price,ItemCount,date введенного в прошлом месяце

Спасибо вам много Альберто

+0

* последнее время * на какой? «Дата» ?? * для каждого последнего * ... снова: для каждого по чему ?? Для каждого 'itemId' ??? –

+1

Пример данных может многое объяснить ... –

ответ

1

Если я правильно понимаю, что вам нужно ROW_NUMBER() с PARTITION BY пункта.

Нечто подобное (не проверено):

;WITH a AS (
SELECT 
    itemId,ItemName,price,ItemCount,date 
    , ROW_NUMBER() OVER (PARTITION BY itemId,ItemName,price,ItemCount ORDER BY date DESC) AS num 
FROM 
table 
WHERE 
date >= @begin_on_current_month 
) 
SELECT 
    a.* 
FROM 
    a 
WHERE 
    a.num = 1 

Это должно вернуть последнюю запись для каждого уникального itemId,ItemName,price,ItemCount добавленного после @begin_on_current_month.

0

Это не работает

ВЫБОР Артикул, ItemName, скорость, найдено, дата, ROW_NUMBER() OVER (PARTITION BY Артикул ORDER BY DESC Дата) КАК NUM ОТ StockCheck КАК в ГДЕ Дата < «2012/01/01' выбрать. * от А ГДЕ a.num = 1 ORDER BY Артикул

чрезмерная SQL-конструкт или инструкция не поддерживается.

6173 18" Алюминиевая фольга X 25' 77,0000 5,00 21/12/2011 00:00:00 1

6173 АЛЮМИНИЙ ФОЛЬГИ 18" X 25' 86.9159 9.00 15/12/2011 00:00:00 2

6173 18" Алюминиевая фольга X 25' 70,0000 69,00 10/12/2011 00:00:00 3

6173 АЛЮМИНИЙ ФОЛЬГИ 18" X 25' 86.9159 9.00 01/12/2011 00:00:00 4

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