Я пытаюсь написать запрос MDX, который, по моему мнению, похож на where exists
в SQL. У нас есть Files
, которые сделаны из SubFiles
, и каждый SubFile
находится в Location
. Существует измерение для Locations
и измерение для Files
(содержащее иерархию File -> SubFile
), а также счетчик всех SubFiles
.
Итак, следующий MDX:
select
[Location].[Location].members on 0,
[File].[File].members on 1
from
[MyCube]
возвращает что-то вроде:
| LocA | LocB | LocC | LocD
----------------------------------------
FileA | null | 2 | 2 | null
FileB | 1 | 2 | null | null
FileC | null | null | 1 | 2
Это показывает, что, например, FileA
имеет 2 SubFiles
в LocB
и 2 SubFiles
в LocC
(и ни в LocA
или LocD
). Всего 4 SubFiles
.
Что мне нужно сделать, так это для данного Location
вернуть все SubFiles
, где хотя бы один SubFile
под тем же File
в данном Location
. Так, например, для приведенного выше примера, если заданное местоположение было LocC
, результирующий набор должен быть:
| LocA | LocB | LocC | LocD
----------------------------------------
FileA |
SubFileA1 | null | null | 1 | null
SubFileA2 | null | 1 | null | null
SubFileA3 | null | 1 | null | null
SubFileA4 | null | null | 1 | null
FileC |
SubFileC1 | null | null | null | 1
SubFileC2 | null | null | 1 | null
SubFileC3 | null | null | null | 1
Итак все SubFiles
для FileA
и FileC
возвращаются, поскольку они имеют по крайней мере 1 SubFile
в LocC
, в то время как FileB
не возвращается, поскольку не имеет SubFiles
в LocC
.
Как мне добиться этого в MDX?