Здравствуйте!
Пытаюсь получить нужную таблицу. Чтобы было понятно описываю по шагам.
При таком запросе
+ |
SELECT
[Measures].[Отгрузки шт]
ON 0,
NON EMPTY
[Торговые точки].[Код ТТ].[Код ТТ] *
[Торговые точки].[Код списка].[Код списка]*
[Продукция].[SKU].[SKU]
ON 1
FROM (SELECT
([Время].[Месяц].&[2016-12-01T00:00:00],
[Торговые точки].[Код ТТ].&[0000001]) ON 0 FROM PROFIT)
|
получаю такой результат
Код ТТ | Код списка | SKU | Отгрузки | ТТ1 | КодСписка7 | SKU1 | 10 | ТТ1 | КодСписка7 | SKU2 | 20 | ТТ1 | КодСписка7 | SKU3 | 30 | ТТ1 | КодСписка7 | SKU4 | 40 | ТТ1 | КодСписка7 | SKU5 | 50 | ТТ1 | КодСписка7 | SKU12 | 60 | ТТ1 | КодСписка7 | SKU13 | 70 |
|
Это отгрузки по ТТ1 по
SKU. В ТТ1 привязан код списка. В том списке перечислены
Общие SKU, которые надо отгрузить.
В общем, есть поле "
Общее SKU", и есть "
SKU". В одном "
Общее SKU" может быть один или два
SKU. Теперь нужно выгрузить
Общее SKU и
SKU, которые прописаны в КодСписка7.
+ |
SELECT
[Measures].[Дата изменения списка]
ON 0,
NON EMPTY
[Списки].[Код списка].&[7]*
[Списки].[Общее SKU].[Общее SKU]*
[Продукция].[SKU].[SKU]
ON 1
FROM PROFIT
|
Код списка | Общее SKU | SKU | Дата изменения списка | КодСписка7 | SKU1 | SKU1 | 10.06.2016 | КодСписка7 | SKU2 | SKU2 | 10.06.2016 | КодСписка7 | SKU3/SKU4 | SKU3 | 10.06.2016 | КодСписка7 | SKU3/SKU4 | SKU4 | 10.06.2016 | КодСписка7 | SKU5/SKU6 | SKU5 | 10.06.2016 | КодСписка7 | SKU5/SKU6 | SKU6 | 10.06.2016 | КодСписка7 | SKU7 | SKU7 | 10.06.2016 | КодСписка7 | SKU8 | SKU8 | 10.06.2016 |
|
Далее нужно выгрузить по ТТ
Общее SKU с нулевыми и не с нулевыми отгрузками. Из того списка указать, какие
Общее SKU отгружено, а какие нет.
SKU, которые не входят в соответствующий список, не выгружаются (в данном случае это SKU12 и SKU13).
+ |
SELECT
[Measures].[Отгрузки шт]
ON 0,
NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ], [Measures].[Отгрузки шт]) *
NONEMPTY([Торговые точки].[Код списка].[Код списка], [Measures].[Отгрузки шт])*
[Списки].[Код списка].[Код списка]*
[Списки].[Общее SKU].[Общее SKU]
HAVING([Торговые точки].[Код списка].CurrentMember.Name = [Списки].[Код списка].CurrentMember.Name)
ON 1
FROM (SELECT
([Время].[Месяц].&[2016-12-01T00:00:00],
[Торговые точки].[Код ТТ].&[0000001])
ON 0
FROM
PROFIT)
|
получаю такой результат
Код ТТ | Код списка | Код списка | Общее SKU | Отгрузки | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | 10 | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | 20 | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | 70 | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | 50 | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | |
|
Эта запись типа объединяет две первые таблицы
HAVING([Торговые точки].[Код списка].CurrentMember.Name = [Списки].[Код списка].CurrentMember.Name)
Но надо получить такой результат!
Код ТТ | Код списка | Код списка | Общее SKU | SKU | Отгрузки | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU1 | 10 | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU2 | 20 | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU3 | 30 | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU4 | 40 | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU5 | 50 | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU6 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU7 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU8 | |
|
Потом в запрос добавляю атрибут
+ |
SELECT
[Measures].[Отгрузки шт]
ON 0,
NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ], [Measures].[Отгрузки шт]) *
NONEMPTY([Торговые точки].[Код списка].[Код списка], [Measures].[Отгрузки шт])*
[Списки].[Код списка].[Код списка]*
[Списки].[Общее SKU].[Общее SKU]*
NONEMPTY([Продукция].[SKU].[SKU], [Measures].[Отгрузки шт])
HAVING([Торговые точки].[Код списка].CurrentMember.Name = [Списки].[Код списка].CurrentMember.Name)
ON 1
FROM (SELECT
([Время].[Месяц].&[2016-12-01T00:00:00],
[Торговые точки].[Код ТТ].&[0000001])
ON 0
FROM
PROFIT)
|
Получаю такой результат:
+ |
Код ТТ | Код списка | Код списка | Общее SKU | SKU | Отгрузки | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU1 | 10 | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU2 | | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU3 | | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU4 | | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU5 | | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU12 | | ТТ1 | КодСписка7 | КодСписка7 | SKU1 | SKU13 | | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU1 | | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU2 | 20 | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU3 | | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU4 | | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU5 | | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU12 | | ТТ1 | КодСписка7 | КодСписка7 | SKU2 | SKU13 | | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU1 | | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU2 | | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU3 | 30 | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU4 | 40 | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU5 | | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU12 | | ТТ1 | КодСписка7 | КодСписка7 | SKU3/SKU4 | SKU13 | | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU1 | | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU2 | | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU3 | | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU4 | | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU5 | 50 | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU12 | | ТТ1 | КодСписка7 | КодСписка7 | SKU5/SKU6 | SKU13 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU1 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU2 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU3 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU4 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU5 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU12 | | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU13 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU1 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU2 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU3 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU4 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU5 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU12 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU13 | |
|
|
и не хватает следующих строк
Код ТТ | Код списка | Код списка | Общее SKU | SKU | Отгрузки | ТТ1 | КодСписка7 | КодСписка7 | SKU7 | SKU7 | | ТТ1 | КодСписка7 | КодСписка7 | SKU8 | SKU8 | |
|
Как тут правильно написать запрос, чтобы получить нужный результат? То ли использовать директиву NON EMPTY, то ли надо использовать функцию NONENPTY (где второй аргумент то ли надо как то использовать меру "Дата изменения матрицы", то ли одновременно меры "Отгрузки" и "Дата изменения матрицы"), то ли какую другую функцию использовать. И возможно ли выгрузить нужную таблицу?