Пустые значения в разнице между строками с использованием функций OVER в выражении IF / Case-when - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть следующие столбцы:

Product, Price, Date

Я также создал столбец "Rank" - Rank ([Product]) - для назначения идентификатора для каждого элемента.

Я хочу вычислить столбец с разницей в цене между двумя продуктами в одну и ту же дату.

Допустим, я хочу вычислить разницу между яблоками и бананами, где яблоки ранжируются в 1, а бананы ранжируются.равен 2.

Я обнаружил, что с этим выражением

First([Price]) OVER (Intersect([Date], FirstNode([Rank]))) - First([Price]) OVER (Intersect([Date], Next(FirstNode([Rank]))))

я могу достичь желаемого результата, но когда я пытаюсь поместить это выражение в IF / Case, когда выражение вроде этого,

If([Product]='Apples', First([Price]) OVER (Intersect([Date], FirstNode([Rank]))) - First([Price]) OVER (Intersect([Date], Next(FirstNode([Rank])))), null)

У меня только пустой столбец, и я не могу понять, почему.Может кто-нибудь объяснить мне это или предложить другие способы получить те же результаты?На самом деле единственное решение, которое я нашел, - это вычислить столбец для цен на яблоки и еще один для цен на бананы, только тогда я смогу сделать разницу между этими значениями в операторе If, но сделать 3 вычисленных столбца, чтобы получить 1, не то, что яхочу.

...