Разница между рядами в одном и том же кулоне для значений, удовлетворяющих определенным условиям - PullRequest
0 голосов
/ 29 ноября 2018

вот мой ввод и мой желаемый вывод.Проблема в том, что у меня есть столбцы для продукта, цены и даты, и я хочу построить перекрестную таблицу, в которой я могу видеть цену предыдущего дня для каждого продукта.

Как рассчитать столбец d-1(день - 1) в моей таблице данных?Должен ли я использовать функции Пересечение / За?Что, если я хочу вычислить столбец d-1 на лету в кросс-таблице?

enter image description here

1 Ответ

0 голосов
/ 29 ноября 2018

У вас есть несколько вариантов здесь, в зависимости от того, как вы хотите отобразить все.

Если все, что вам нужно, это общий снимок того, как он изменился между сегодняшним и вчерашним днем, вероятно, самая простая вещь, которую нужно сделать, это следующее:

Avg(If([DATE]=Date(DateTimeNow()),[Price],NULL)) as [Today's Price], 
Avg(If([DATE]=Date(DateAdd("day",-1,DateTimeNow())),[Price],NULL)) as [Yesterday's Price], 
Avg(If([DATE]=Date(DateTimeNow()),[Price],NULL)) - Avg(If([DATE]=Date(DateAdd("day",-1,DateTimeNow())),[Price],NULL)) as [d-1]

Это может быть очень полезно для панели мониторинга или сводки, и если вы замените компонент «DateTimeNow» на свойство документа, контролируемое полем ввода, это может быстро показать вашему пользователю изменение вконкретный день.


Функции Over могут быть весьма полезны, особенно если вы используете иерархию дат некоторой формы.
Он будет обновляться на лету, чтобы вместить столбцы, сгруппированные поtop, поэтому, если вы отображаете по дате, вы можете видеть, как он меняется каждый день, а если вы отображаете по месяцам, вы можете видеть это таким образом.

Avg([Price]) as [Avg Price], 
Avg([Price]) - Avg([Price]) OVER (PreviousPeriod([Axis.Columns])) as [Avg Price Change] 
...