Quantcast
Channel: SQL.ru: OLAP и DWH
Viewing all articles
Browse latest Browse all 1167

Получить минимальную дату

$
0
0
Здравствуйте!

Нужно выгрузить таблицу с полями "Город", "Код ТТ", "SKU" и "Дата". Где "Дата" – это первая (min) дата отгрузки для пары "Код ТТ - SKU".

Написал такой MDX-запрос.

+MDX-запрос
WITH
MEMBER [Measures].[Min Дата] AS
	 MIN
		(EXISTING 
			//NONEMPTY(
				{[Торговые точки].[Код ТТ].CURRENTMEMBER}*
					{[SKU].[Общее SKU].CURRENTMEMBER}*
					{[Время].[Дата].[Дата].MEMBERS}
			//	,[Measures].[Отгрузки шт]
			//)
		,IIF
			(
				[Measures].[Отгрузки шт] = 0
				,NULL
				,[Время].[Дата].CurrentMember.MEMBERVALUE
			)
		)
SELECT
NON EMPTY
	{[Measures].[Отгрузки шт],
	[Measures].[Min Дата]} ON 0,
NON EMPTY
	[Города].[Город].[Город]*
	[Торговые точки].[Код ТТ].[Код ТТ]*
	[SKU].[Общее SKU].[Общее SKU]*
	[Время].[Дата].[Дата]
//HAVING
//	[Время].[Дата].CurrentMember.MEMBERVALUE = [Measures].[Min Дата]
//...
ON 1
FROM
	(SELECT (
	[Время].[Дата].&[2019-01-01T00:00:00]:[Время].[Дата].&[2019-03-26T00:00:00]
	,{[Торговые точки].[Код ТТ].&[00001грд],[Торговые точки].[Код ТТ].&[00002грд]}) ON 0 FROM PROFIT)

Выдает такой результат:

Город Код ТТ Общее SKU Дата Отгрузки шт Min Дата
Город1 00001грд SKU1 26.02.2019 2 26.02.2019
Город1 00001грд SKU1 05.03.2019 2 05.03.2019
Город1 00001грд SKU2 08.01.2019 2 08.01.2019
Город1 00001грд SKU2 12.02.2019 2 12.02.2019
Город1 00001грд SKU2 26.02.2019 2 26.02.2019
Город1 00001грд SKU2 05.03.2019 2 05.03.2019
Город1 00001грд SKU2 12.03.2019 2 12.03.2019
Город1 00001грд SKU2 19.03.2019 4 19.03.2019
Город1 00001грд SKU2 26.03.2019 2 26.03.2019

Результат не верный.


В промежуточном результате должно быть так:

Город Код ТТ Общее SKU Дата Отгрузки шт Min Дата
Город1 00001грд SKU1 26.02.2019 2 26.02.2019
Город1 00001грд SKU1 05.03.2019 2 26.02.2019
Город1 00001грд SKU2 08.01.2019 2 08.01.2019
Город1 00001грд SKU2 12.02.2019 2 08.01.2019
Город1 00001грд SKU2 26.02.2019 2 08.01.2019
Город1 00001грд SKU2 05.03.2019 2 08.01.2019
Город1 00001грд SKU2 12.03.2019 2 08.01.2019
Город1 00001грд SKU2 19.03.2019 4 08.01.2019
Город1 00001грд SKU2 26.03.2019 2 08.01.2019


А в конечном результате - так:

Город Код ТТ Общее SKU Дата Отгрузки шт Min Дата
Город1 00001грд SKU1 26.02.2019 2 26.02.2019
Город1 00001грд SKU2 08.01.2019 2 08.01.2019


Время выгрузки - 6 минут 15 секунд. Учитывая, что выгружались 2 ТТ точки с 1 января 2019. А выгрузка будет по всем ТТ с 1 января 2018. Если использовать функцию NONEMPTY, которая закоментирована в запросе, то дольше выгружает.

1. Как правильно написать запрос, чтобы выгружалось как в конечной таблице?

2. Как написать запрос более оптимально, чтобы быстрее выгружалось?

Viewing all articles
Browse latest Browse all 1167

Trending Articles