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

Откуда:
Сообщений: 49
ДД. Как решить такие задачи.

Табл1

1-айди услуги
2-дата выпол услуги
3 Тариф
4-айди документа

1 01.12.2018 20 1
2 01.12.2018 21 1
3 02.12.2018 22 1
4 03.12.2018 22 1
5 04.12.2018 23 1
6 04.12.2018 21 1
7 04.12.2018 25 1

Табл2

1-Айди тарифа
2-Цена

20 2.0
21 10.0
22 20.0
23 5.0
25 8.0

результирующая таблица получена отсеиванием данных с первой таблицы


1 01.12.2018 20 1
3 02.12.2018 22 1
4 03.12.2018 22 1
5 04.12.2018 23 1

Как должна быть схема решения?
1. Сначала соединяешь две таблицы
2. Группируешь по дате
3 Выбираешь минимальную?

или совсем другая должна быть?


Примерно как должен быть запрос.
15 дек 18, 08:41    [21764635]     Ответить | Цитировать Сообщить модератору
 Re: Схема решений задачи  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
El_Ninio,

По вашему мнению тут возможны варианты?
15 дек 18, 09:51    [21764645]     Ответить | Цитировать Сообщить модератору
 Re: Схема решений задачи  [new]
Massa52
Member

Откуда:
Сообщений: 373
El_Ninio,
А задача то какая - подогнать под результат?
+
DECLARE @usluga AS TABLE (idu int, dataIspolneniya Date, idt int, iddok int)
INSERT @usluga (idu, dataIspolneniya, idt, iddok) VALUES
(1,	'20181201',	20,	1),
(2,	'20181201',	21,	1),
(3,	'20181202',	22,	1),
(4,	'20181203',	22,	1),
(5,	'20181204',	23,	1),
(6,	'20181204',	21,	1),
(7,	'20181204',	25,	1);
 
DECLARE @tarif AS TABLE (idt int, price money)
INSERT @tarif (idt,price) VALUES
(20,	2.0	),
(21,	10.0),	
(22,	20.0),	
(23,	5.0	),
(25,	8.0	)

--1. Сначала соединяешь две таблицы
SELECT idu, dataIspolneniya, u.idt, iddok, t.idt,price FROM @usluga u INNER JOIN @tarif t ON u.idt = t.idt 
-- получаем
--1	2018-12-01	20	1	20	2.00
--2	2018-12-01	21	1	21	10.00
--3	2018-12-02	22	1	22	20.00
--4	2018-12-03	22	1	22	20.00
--5	2018-12-04	23	1	23	5.00
--6	2018-12-04	21	1	21	10.00
--7	2018-12-04	25	1	25	8.00
--2. Группируешь по дате
SELECT MIN(idu) minidu, dataIspolneniya, MAX(price) AS maxPrice, MIN(price) minPrice FROM @usluga u INNER JOIN @tarif t ON u.idt = t.idt 
GROUP BY dataIspolneniya
-- получаем
--minidu	dataIspolneniya	maxPrice	minPrice 
--1			2018-12-01		10.00		2.00
--3			2018-12-02		20.00		20.00
--4			2018-12-03		20.00		20.00
--5			2018-12-04		10.00		5.00

15 дек 18, 10:28    [21764659]     Ответить | Цитировать Сообщить модератору
 Re: Схема решений задачи  [new]
El_Ninio
Member

Откуда:
Сообщений: 49
Massa52, удалить оставляя только эту.

-- получаем
--minidu dataIspolneniya maxPrice minPrice
--1 2018-12-01 10.00 2.00
--3 2018-12-02 20.00 20.00
--4 2018-12-03 20.00 20.00
--5 2018-12-04 10.00 5.00
15 дек 18, 16:23    [21764846]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить