MDX层次结构在crossjoin函数中调用多次
来源:互联网 发布:360智能摄像机软件 编辑:程序博客网 时间:2024/05/22 12:55
问题来自SQL版提问,问题提出比较清晰
http://topic.csdn.net/u/20081208/18/662ee8ba-500e-491c-83f7-06729d7fc4fe.html
这里的多维数据集是foodmart的Warehouse and Sales。
1、查询销售量最高的2个品牌及其下销量最低的商品
这个问题我使用下面语句:
select {[Unit Sales]} on COLUMNS,
Generate(
TOPCOUNT([Product].[Products].[Brand].members, 2, [Unit Sales]),
{[Product].[Products].CurrentMember}*
BottomCount([Product].[Products].[Product].members, 1, ([Unit Sales],[Product].[Products].CurrentMember))
)on ROWS
from [Warehouse and Sales]
但是报错说Products层次结构在crossjoin函数中调用多次,我不明白为什么?如果不能这样做,而Product维度又只有一个层次结构,那么应该这样才能得到结果呢?
...
我的第一个回答
>>Products层次结构在crossjoin函数中调用多次
错误说明已经很明白了,msdn的例子是两个不同纬度(层次结构上的),同一层次结构只要用CurrentMember.Children就可以了何必再交叉呢
反馈
mdx写成这样:
select {[Unit Sales]} on COLUMNS,
Generate(
TOPCOUNT([Product].[Products].[Brand].members, 2, [Unit Sales]),
BottomCount([Product].[Products].CurrentMember.Children, 1, ([Unit Sales],[Product].[Products].CurrentMember))
)on ROWS
from [Warehouse and Sales]
每行前面就没有商品品牌了。
我的第二个回答
层次结构不能多次出现,但是维度可以多次出现,把你要的品牌在前面再交叉一次吧:p
但是不能用层次结构,我不知道原始纬度是什么,比如是[Products].[Brand]
rows这里改为
{TOPCOUNT([Products].[Brand].children,2, [Unit Sales])}*{Generate(...)} on rows
反馈
我试了你说的,确实可以的
http://topic.csdn.net/u/20081208/18/662ee8ba-500e-491c-83f7-06729d7fc4fe.html
这里的多维数据集是foodmart的Warehouse and Sales。
1、查询销售量最高的2个品牌及其下销量最低的商品
这个问题我使用下面语句:
select {[Unit Sales]} on COLUMNS,
Generate(
TOPCOUNT([Product].[Products].[Brand].members, 2, [Unit Sales]),
{[Product].[Products].CurrentMember}*
BottomCount([Product].[Products].[Product].members, 1, ([Unit Sales],[Product].[Products].CurrentMember))
)on ROWS
from [Warehouse and Sales]
但是报错说Products层次结构在crossjoin函数中调用多次,我不明白为什么?如果不能这样做,而Product维度又只有一个层次结构,那么应该这样才能得到结果呢?
...
我的第一个回答
>>Products层次结构在crossjoin函数中调用多次
错误说明已经很明白了,msdn的例子是两个不同纬度(层次结构上的),同一层次结构只要用CurrentMember.Children就可以了何必再交叉呢
反馈
mdx写成这样:
select {[Unit Sales]} on COLUMNS,
Generate(
TOPCOUNT([Product].[Products].[Brand].members, 2, [Unit Sales]),
BottomCount([Product].[Products].CurrentMember.Children, 1, ([Unit Sales],[Product].[Products].CurrentMember))
)on ROWS
from [Warehouse and Sales]
每行前面就没有商品品牌了。
我的第二个回答
层次结构不能多次出现,但是维度可以多次出现,把你要的品牌在前面再交叉一次吧:p
但是不能用层次结构,我不知道原始纬度是什么,比如是[Products].[Brand]
rows这里改为
{TOPCOUNT([Products].[Brand].children,2, [Unit Sales])}*{Generate(...)} on rows
反馈
我试了你说的,确实可以的
- MDX层次结构在crossjoin函数中调用多次
- Crossjoin (MDX)
- Reporting Services 中展示有CrossJoin函数的MDX查询结果
- 在层次结构中添加带参数的构造函数
- 在MDX中使用别名
- 在结构体中根据名字调用对应的函数
- MDX 函数参考 (MDX)
- MDX 函数参考 (MDX)
- MDX按层次查询
- 《CSAPP》存储器层次结构:在程序中利用局部性
- mondrian 中MDX函数解析 执行入口
- 在MDX中处理边界情况
- 在一个TSQL语句中多次使用Count聚合函数
- 在项目中,多次声明函数的好处
- 《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九:导航结构层次
- MDX 函数参考 (MDX)--MSDN
- visual studio 小技巧 查看函数的调用层次结构 以及 部分常用快捷键
- 在.net 中 将线性结构数据列表转换为 XML 格式的层次结构
- 数据管理是企业成功实施SOA的关键
- L CD屏红色和蓝色反了,该修改哪个寂存器呀?
- vs2008智能感知jquery
- 什么是Hibernate
- java中判断字符串是否为数字的四种方法
- MDX层次结构在crossjoin函数中调用多次
- 如何成为Shell编程高手
- 什么是Struts
- C++堆、栈、自由存储区、全局/静态存储区和常量存储区
- 异步上传文件以及php对文件的处理
- 程序属性中EDITOR LOCK
- 手工创建loopback image
- 使用Win32创建串口通讯程序
- C#结构体和字节数组的转换