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

Откуда:
Сообщений: 7863
Блин... что-то не могу составить правильный запрос.
Прошу помощи.
SELECT @@VERSION
Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 
	May 14 2014 18:34:29 
	Copyright (c) Microsoft Corporation
	Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Есть набор записей:
	SELECT R.Num, CONVERT(varchar(10),R.Date,104) as Date1, R.Date
	FROM
	(
		SELECT 1 as Num, CAST('20100101' as datetime) as Date
		UNION ALL
		SELECT 2, CAST('20100102' as datetime)
		UNION ALL
		SELECT 3, CAST('20100103' as datetime)
		UNION ALL
		SELECT 4, CAST('20100102' as datetime)
		UNION ALL
		SELECT 5, CAST('20100103' as datetime)
		UNION ALL
		SELECT 10, CAST('20100103' as datetime)
		UNION ALL
		SELECT 7, CAST('20100104' as datetime)
		UNION ALL
		SELECT 6, CAST('20100103' as datetime)
		UNION ALL
		SELECT 8, CAST('20100103' as datetime)
		UNION ALL
		SELECT 13, CAST('20100103' as datetime)
		UNION ALL
		SELECT 9, CAST('20100105' as datetime)
	) R
	ORDER BY R.Date,R.Num;

Мне надо найти записи в которых "номер из меньшей даты был больше минимального номера из большей".

Составил вроде и доп. запрос:
SELECT CONVERT(varchar(10),R.Date,104) as Date1, R.Date, MIN(R.Num) as Min_N, MAX(R.Num) as Max_N
	FROM
	(
		SELECT 1 as Num, CAST('20100101' as datetime) as Date
		UNION ALL
		SELECT 2, CAST('20100102' as datetime)
		UNION ALL
		SELECT 3, CAST('20100103' as datetime)
		UNION ALL
		SELECT 4, CAST('20100102' as datetime)
		UNION ALL
		SELECT 5, CAST('20100103' as datetime)
		UNION ALL
		SELECT 10, CAST('20100103' as datetime)
		UNION ALL
		SELECT 7, CAST('20100104' as datetime)
		UNION ALL
		SELECT 6, CAST('20100103' as datetime)
		UNION ALL
		SELECT 8, CAST('20100103' as datetime)
		UNION ALL
		SELECT 13, CAST('20100103' as datetime)
		UNION ALL
		SELECT 9, CAST('20100105' as datetime)
	) R
	GROUP BY R.Date
	ORDER BY R.Date;

Но как правильно получить результат?
Должно быть:
НомерДата
402.01.2010
803.01.2010
1003.01.2010
1303.01.2010
21 июл 16, 11:16    [19434981]     Ответить | Цитировать Сообщить модератору
 Re: Неправильная последовательность номеров  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
;with tbl1 as
(
	SELECT R.Num, CONVERT(varchar(10),R.Date,104) as Date1, R.Date

	FROM
	(
		SELECT 1 as Num, CAST('20100101' as datetime) as [Date]
		UNION ALL
		SELECT 2, CAST('20100102' as datetime)
		UNION ALL
		SELECT 3, CAST('20100103' as datetime)
		UNION ALL
		SELECT 4, CAST('20100102' as datetime)
		UNION ALL
		SELECT 5, CAST('20100103' as datetime)
		UNION ALL
		SELECT 10, CAST('20100103' as datetime)
		UNION ALL
		SELECT 7, CAST('20100104' as datetime)
		UNION ALL
		SELECT 6, CAST('20100103' as datetime)
		UNION ALL
		SELECT 8, CAST('20100103' as datetime)
		UNION ALL
		SELECT 13, CAST('20100103' as datetime)
		UNION ALL
		SELECT 9, CAST('20100105' as datetime)
	) R
)
select t1.* from tbl1 t1
where exists (select * from tbl1 t2 where t1.date1 < t2.date1 and t1.num > t2.num)
order by t1.date1, t1.num
21 июл 16, 11:50    [19435274]     Ответить | Цитировать Сообщить модератору
 Re: Неправильная последовательность номеров  [new]
Владимир СА
Member

Откуда:
Сообщений: 7863
Владислав Колосов
....
Большое спасибо... проанализирую...
21 июл 16, 12:03    [19435378]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить