powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Выгрузить данные
5 сообщений из 5, страница 1 из 1
Выгрузить данные
    #39450350
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть задача выгрузить ТТ, у которых в заданных месяцах отгрузки больше нуля.

Написал такой MDX-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
	{([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)}
ON 0,
NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ]
HAVING (
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-01-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-02-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-03-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-04-01T00:00:00])>0
	) ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00])ON 0 FROM PROFIT)


Выдает нужный результат
Отгрузки сумма без НДСОтгрузки сумма без НДСОтгрузки сумма без НДСОтгрузки сумма без НДСЯнварь 2017Февраль 2017Март 2017Апрель 2017ТТ1100110120170ТТ290100120130ТТ380110125130ТТ460110135120...............
HAVING получился длинным, но если придется задавать не 4 месяца, а 12 или 24 месяца, то запись удлиняется.

Если написать так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
	{([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)}
ON 0,
NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ]
HAVING (
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)>0
	) ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00])ON 0 FROM PROFIT)


то пишет ошибку "Функция GreaterThan ожидает для аргумента 1 строчное или числовое выражение. Было использовано выражение набора кортежей."

Как правильно написать запрос, чтобы запись была укороченная?
...
Рейтинг: 0 / 0
Выгрузить данные
    #39450499
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

даже если предположить, что второй запрос правильный, то результаты выполнения первого и второго будут разные. в первом "покажи отгрузки по ТТ с янв 2017 по апр 2017 у которых были отгрузки в каждом месяце с янв 2016 по апр 2016" второй немного получается попроще: "покажи отгрузки по ТТ с янв 2017 по апр 2017 у которых были отгрузки в каждом указанном месяце"

существуют факты отгрузки <=0?

почему именно having?
...
Рейтинг: 0 / 0
Выгрузить данные
    #39450789
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgorсуществуют факты отгрузки <=0?Да. Нулевые отгрузки, если были возвраты в том же периоде. Отрицательные отгрузки, если были корректировки.
почему именно having?А что можно еще кроме Having? FILTER?
...
Рейтинг: 0 / 0
Выгрузить данные
    #39451024
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
	{([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)}
ON 0,
NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ]
HAVING (
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-01-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-02-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-03-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-04-01T00:00:00])>0
	) ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00])ON 0 FROM PROFIT)

В запросе вместо "2016" должно быть "2017".
ShIgorдаже если предположить, что второй запрос правильный, то результаты выполнения первого и второго будут разные. в первом "покажи отгрузки по ТТ с янв 2017 по апр 2017 у которых были отгрузки в каждом месяце с янв 2016 по апр 2016"Вот даже когда делаешь большие записи можно сделать ошибку как описано выше, чтобы этого избежать нужно оптимизировать запрос.
ShIgorдаже если предположить, что второй запрос правильныйвыдает ошибку "Функция GreaterThan ожидает для аргумента 1 строчное или числовое выражение. Было использовано выражение набора кортежей." Или надо было как то по другому написать?
...
Рейтинг: 0 / 0
Выгрузить данные
    #39451025
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Месяц из колонок перенести в строки
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
    [Measures].[Отгрузки сумма без НДС]
ON 0,
NON EMPTY
    [Торговые точки].[Код ТТ].[Код ТТ]*
    [Время].[Месяц].[Месяц]
ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00]) ON 0 FROM PROFIT)

то результат выходит такой
ТТМесяцОтгрузки сумма без НДСТТ1Январь 2017110ТТ1Февраль 2017111ТТ1Март 2017120ТТ1Апрель 2017180ТТ2Январь 2017130ТТ2Февраль 2017140ТТ2Март 2017150ТТ3Январь 201780ТТ3Февраль 201785ТТ3Март 201790ТТ3Апрель 2017101ТТ4Январь 2017200ТТ4Февраль 20170ТТ4Март 2017202ТТ4Апрель 2017203.........
Зачеркнутые строки не должны выгружаться.


Если так написать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT
    [Measures].[Отгрузки сумма без НДС]
ON 0,
NON EMPTY
    [Торговые точки].[Код ТТ].[Код ТТ]*
    [Время].[Месяц].[Месяц]
HAVING (
([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2017-01-01T00:00:00]) >0 AND
([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2017-02-01T00:00:00]) >0 AND
([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2017-03-01T00:00:00]) >0 AND
([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2017-04-01T00:00:00]) >0
)
ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00]) ON 0 FROM PROFIT)

Дает такой нужный результат
ТТМесяцОтгрузки сумма без НДСТТ1Январь 2017110ТТ1Февраль 2017111ТТ1Март 2017120ТТ1Апрель 2017180ТТ3Январь 201780ТТ3Февраль 201785ТТ3Март 201790ТТ3Апрель 2017101.........

Как по короче можно написать? В анализируемом периоде 36 месяцев, а если по неделям, то это очень длинная запись добавиться.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Выгрузить данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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