Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Схема решений задачи / 4 сообщений из 4, страница 1 из 1
15.12.2018, 08:41
    #39748306
El_Ninio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема решений задачи
ДД. Как решить такие задачи.

Табл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 Выбираешь минимальную?

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


Примерно как должен быть запрос.
...
Рейтинг: 0 / 0
15.12.2018, 09:51
    #39748315
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема решений задачи
El_Ninio,

По вашему мнению тут возможны варианты?
...
Рейтинг: 0 / 0
15.12.2018, 10:28
    #39748325
Massa52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема решений задачи
El_Ninio,
А задача то какая - подогнать под результат?
Код: 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.
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


...
Рейтинг: 0 / 0
15.12.2018, 16:23
    #39748406
El_Ninio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема решений задачи
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
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Схема решений задачи / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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