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

Откуда:
Сообщений: 450
Доброго времени суток!
Имеется таблица обхода оборудования инспекторами, при котором замеряется некое значение.
CREATE TABLE [dbo].[Table](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[id_Insp] [int] NOT NULL,
	[id_Роst] [int] NOT NULL,
	[Value] int
	[Date] [datetime] 


подскажите, пожалуйста, как составить запрос, чтобы получить одновременно по каждому инспектору и посту получить последнее и предпоследнее по дате значение.
3 апр 14, 12:05    [15826268]     Ответить | Цитировать Сообщить модератору
 Re: Заджойнить таблицу саму на себя для сравнения значений  [new]
Volodya
Member

Откуда:
Сообщений: 450
SQL Server 2008 R2
3 апр 14, 12:06    [15826275]     Ответить | Цитировать Сообщить модератору
 Re: Заджойнить таблицу саму на себя для сравнения значений  [new]
Добрый Э - Эх
Guest
Volodya,

top 1 подзапрос.
Хоть в виде скаляра в селек-листе, хоть в виде apply в join-е
3 апр 14, 12:07    [15826287]     Ответить | Цитировать Сообщить модератору
 Re: Заджойнить таблицу саму на себя для сравнения значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Volodya
чтобы получить одновременно по каждому инспектору и посту получить последнее и предпоследнее по дате значение.

пронумеровать их по убыванию даты
И выбрать все с номерами 1 и 2
3 апр 14, 12:08    [15826294]     Ответить | Цитировать Сообщить модератору
 Re: Заджойнить таблицу саму на себя для сравнения значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
WITH CTE AS(SELECT N=ROW_NUMBER()OVER(PARTITION BY [id_Insp],[id_Роst] ORDER BY [Date] DESC) FROM [dbo].[Table])
SELECT * FROM CTE WHERE N<3 ORDER BY [Date];
3 апр 14, 12:09    [15826309]     Ответить | Цитировать Сообщить модератору
 Re: Заджойнить таблицу саму на себя для сравнения значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
SELECT TOP(1) WITH TIES *
FROM [dbo].[Table]
ORDER BY ROW_NUMBER()OVER(PARTITION BY [id_Insp],[id_Роst] ORDER BY [Date] DESC)/3;
3 апр 14, 12:11    [15826320]     Ответить | Цитировать Сообщить модератору
 Re: Заджойнить таблицу саму на себя для сравнения значений  [new]
Volodya
Member

Откуда:
Сообщений: 450
Спасибо, получилось.
3 апр 14, 12:43    [15826548]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить