请问如何在程序中实现查询多维数据集?(告诉我个概念就行,不用具体的)

lionqun 2003-11-27 10:28:37
同标题
...全文
36 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuiniu 2003-12-02
  • 打赏
  • 举报
回复
多维数据集
CUBE 运算符可用于生成 n 维的多维数据集,即具有任意数目维度的多维数据集。只有一个维度的多维数据集可用于生成合计,例如:

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item WITH CUBE
GO

此 SELECT 语句返回的结果集既显示了 Item 中每个值的小计,也显示了 Item 中所有值的总计:

Item QtySum
-------------------- --------------------------
Chair 311.00
Table 347.00
ALL 658.00

包含带有许多维度的 CUBE 的 SELECT 语句可能生成很大的结果集,因为这些语句会为所有维度中值的所有组合生成行。这些大结果集包含的数据可能过多而不易于阅读和理解。这个问题有一种解决办法是将 SELECT 语句放在视图中:

CREATE VIEW InvCube AS
SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH CUBE

然后即可用该视图来只查询您感兴趣的维度值:

SELECT *
FROM InvCube
WHERE Item = 'Chair'
AND Color = 'ALL'

Item Color QtySum
-------------------- -------------------- --------------------------
Chair ALL 311.00

(1 row(s) affected)

shuiniu 2003-12-02
  • 打赏
  • 举报
回复
维度是分类的有组织的层次结构,称为级别,它描述数据仓库事实数据表中的数据。维度一般描述一个成员的相似集合,用户将基于该集合进行分析,并且维度是多维数据集的基本组件
lionqun 2003-12-02
  • 打赏
  • 举报
回复
自己顶一下

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧