Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка / 20 сообщений из 20, страница 1 из 1
27.09.2018, 10:41
    #39709092
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Народ,
MS SQL 2000
Не приходит в голову как мене выбрать из таблицы по 3 записи каждого наименования товара с ценой закупки упорядоченных по дате:
ID_Item, Data, Price

1 21.09.2018 1000
2 11.09.2018 1100
2 13.09.2018 1200
2 15.09.2018 1300
1 16.09.2018 1400
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700
1 17.08.2018 1800
2 05.08.2018 1900
3 07.09.2018 2000
2 09.08.2018 2100
3 15.07.2018 2200
3 18.08.2018 2300
3 03.09.2018 2400
Результат:
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700
2 05.08.2018 1900
2 09.08.2018 2100
2 11.09.2018 1100
3 03.09.2018 2400
3 07.09.2018 2000
3 15.07.2018 2200
Всем спасибо
...
Рейтинг: 0 / 0
27.09.2018, 10:49
    #39709101
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Valerii,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
SET DATEFORMAT DMY;
DECLARE @a TABLE (ID_Item int, Data date, Price int)
INSERT INTO @a VALUES
(1, '21-09-2018', 1000),
(2, '11-09-2018', 1100), 
(2, '13-09-2018', 1200),
(2, '15-09-2018', 1300),
(1, '16-09-2018', 1400),
(1, '12-09-2018', 1500),
(1, '14-08-2018', 1600),
(1, '16-09-2018', 1700),
(1, '17-08-2018', 1800),
(2, '05-08-2018', 1900),
(3, '07-09-2018', 2000),
(2, '09-08-2018', 2100),
(3, '15-07-2018', 2200),
(3, '18-08-2018', 2300),
(3, '03-09-2018', 2400)


SELECT  
	ID_Item,
	Data,
	Price
FROM 
(
	SELECT 
		ID_Item,
		Data,
		Price,
		[r] = (SELECT count (id_Item) FROM @a b WHERE b.Data < a.Data AND b.id_Item = a.id_Item)
	FROM @a a
) as c
WHERE 
	r < 3
ORDER BY 
	id_Item,
	Data
...
Рейтинг: 0 / 0
27.09.2018, 10:49
    #39709103
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
ValeriiНарод,
MS SQL 2000
Не приходит в голову как мене выбрать из таблицы по 3 записи каждого наименования товара с ценой закупки упорядоченных по дате:
ID_Item, Data, Price

1 21.09.2018 1000
2 11.09.2018 1100
2 13.09.2018 1200
2 15.09.2018 1300
1 16.09.2018 1400
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700
1 17.08.2018 1800
2 05.08.2018 1900
3 07.09.2018 2000
2 09.08.2018 2100
3 15.07.2018 2200
3 18.08.2018 2300
3 03.09.2018 2400


Результат:
1 14.08.2018 1600
1 12.09.2018 1500
1 16.09.2018 1700
2 05.08.2018 1900
2 09.08.2018 2100
2 11.09.2018 1100
3 15.07.2018 2200
3 03.09.2018 2400
3 07.09.2018 2000
Всем спасибо
...
Рейтинг: 0 / 0
27.09.2018, 10:49
    #39709104
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Valerii,

Код: sql
1.
2.
3.
Select top 1 with ties * 
.....
Order by (row_number() over (partitoin by товар Order by дата desc) - 1)/3
...
Рейтинг: 0 / 0
27.09.2018, 10:53
    #39709110
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
KopellyValerii,

Код: sql
1.
2.
3.
Select top 1 with ties * 
.....
Order by (row_number() over (partitoin by товар Order by дата desc) - 1)/3


оба на 2к не работают
...
Рейтинг: 0 / 0
27.09.2018, 10:58
    #39709117
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Valerii.....упорядоченных по дате:

ID_Item, Data, Price
1 21.09.2018 1000
1 16.09.2018 1400
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700
1 17.08.2018 1800
Результат:
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700


Не вижу упорядочивания по дате в контрольном примере/результате.
...
Рейтинг: 0 / 0
27.09.2018, 11:01
    #39709122
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
TaPaK,

Супер.. спасибо.
...
Рейтинг: 0 / 0
27.09.2018, 11:05
    #39709130
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
982183Valerii.....упорядоченных по дате:

ID_Item, Data, Price
1 21.09.2018 1000
1 16.09.2018 1400
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700
1 17.08.2018 1800
Результат:
1 12.09.2018 1500
1 14.08.2018 1600
1 16.09.2018 1700

Не вижу упорядочивания по дате в контрольном примере/результате.
не вижу умения читать тз
...
Рейтинг: 0 / 0
27.09.2018, 11:16
    #39709147
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
TaPaK982183пропущено...

Не вижу упорядочивания по дате в контрольном примере/результате.
не вижу умения читать тз

опечатака
...
Рейтинг: 0 / 0
27.09.2018, 11:21
    #39709151
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
TaPaKне вижу умения читать тз
Ну так хотя бы указал по возрастанию и ли убыванию.
...
Рейтинг: 0 / 0
27.09.2018, 11:25
    #39709154
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
982183TaPaKне вижу умения читать тз
Ну так хотя бы указал по возрастанию и ли убыванию.
только для вас это важно
...
Рейтинг: 0 / 0
27.09.2018, 11:33
    #39709161
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
TaPaKValerii,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
SET DATEFORMAT DMY;
DECLARE @a TABLE (ID_Item int, Data date, Price int)
INSERT INTO @a VALUES
(1, '21-09-2018', 1000),
(2, '11-09-2018', 1100), 
(2, '13-09-2018', 1200),
(2, '15-09-2018', 1300),
(1, '16-09-2018', 1400),
(1, '12-09-2018', 1500),
(1, '14-08-2018', 1600),
(1, '16-09-2018', 1700),
(1, '17-08-2018', 1800),
(2, '05-08-2018', 1900),
(3, '07-09-2018', 2000),
(2, '09-08-2018', 2100),
(3, '15-07-2018', 2200),
(3, '18-08-2018', 2300),
(3, '03-09-2018', 2400)


SELECT  
	ID_Item,
	Data,
	Price
FROM 
(
	SELECT 
		ID_Item,
		Data,
		Price,
		[r] = (SELECT count (id_Item) FROM @a b WHERE b.Data < a.Data AND b.id_Item = a.id_Item)
	FROM @a a
) as c
WHERE 
	r < 3
ORDER BY 
	id_Item,
	Data



Садись, неуд.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
-- Лучше иметь уникальный идентификатор строки...
SELECT  
	ID_Item,
	Data,
	Price
FROM @a as t
  where data in ( select top(3) Data from @a as a where a.id_Item = t.id_Item order by Data asc )
ORDER BY id_Item, Data;
...
Рейтинг: 0 / 0
27.09.2018, 12:07
    #39709186
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
aleks222,

Line 6: Incorrect syntax near '('
...
Рейтинг: 0 / 0
27.09.2018, 12:08
    #39709188
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Valerii,

TOP 3
...
Рейтинг: 0 / 0
27.09.2018, 12:11
    #39709189
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
Valerii,

Но первый пример лучше, так как в нем ожно параметризировать количество записей каждого товара. В вашем случае насколько я нарывался на проблемы я не могу параметризировать выражение ТОР @InvoiceRecord
...
Рейтинг: 0 / 0
27.09.2018, 12:12
    #39709190
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
ValeriiValerii,

Но первый пример лучше, так как в нем ожно параметризировать количество записей каждого товара. В вашем случае насколько я нарывался на проблемы я не могу параметризировать выражение ТОР @InvoiceRecord
не помню как в 2000 но вообще
TOP (SELECT @InvoiceRecord)
...
Рейтинг: 0 / 0
27.09.2018, 16:16
    #39709395
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
TaPaKValeriiValerii,

Но первый пример лучше, так как в нем ожно параметризировать количество записей каждого товара. В вашем случае насколько я нарывался на проблемы я не могу параметризировать выражение ТОР @InvoiceRecord
не помню как в 2000 но вообще
TOP (SELECT @InvoiceRecord)Скобки в TOP появились в SQL2005
...
Рейтинг: 0 / 0
27.09.2018, 16:20
    #39709400
256k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
TaPaKKopellyValerii,

Код: sql
1.
2.
3.
Select top 1 with ties * 
.....
Order by (row_number() over (partitoin by товар Order by дата desc) - 1)/3


оба на 2к не работают

Это будет работать на 2000?
Код: sql
1.
2.
3.
4.
DECLARE @a TABLE (ID_Item int, Data date, Price int)
INSERT INTO @a VALUES
(1, '21-09-2018', 1000),
(2, '11-09-2018', 1100),
...
Рейтинг: 0 / 0
27.09.2018, 16:23
    #39709401
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
256kTaPaKпропущено...

оба на 2к не работают

Это будет работать на 2000?
Код: sql
1.
2.
3.
4.
DECLARE @a TABLE (ID_Item int, Data date, Price int)
INSERT INTO @a VALUES
(1, '21-09-2018', 1000),
(2, '11-09-2018', 1100),


какой щепетильный малый, таблица у страдальца своя на кой чёрт ему моя?
...
Рейтинг: 0 / 0
27.09.2018, 16:23
    #39709402
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка
256kTaPaKпропущено...

оба на 2к не работают

Это будет работать на 2000?
Код: sql
1.
2.
3.
4.
DECLARE @a TABLE (ID_Item int, Data date, Price int)
INSERT INTO @a VALUES
(1, '21-09-2018', 1000),
(2, '11-09-2018', 1100),

Нет. Но это всего лишь создание табличной переменной с заполнением.
Что мешает вместо VALUES(),() написать SELECT UNION ALL SELECT ?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]