这篇文章主要介绍SQLserver中cube多维数据集的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、cube:生成多维数据集,包含各维度可能组合的交叉表格,使用with 关键字连接 with cube

根据需要使用union all 拼接

判断 某一列的null值来自源数据还是 cube 使用GROUPING关键字

GROUPING([档案号]) = 1 : null值来自cube(代表所有的档案号)
GROUPING([档案号]) = 0 : null值来自源数据

举例:

SELECT*INTO##GETFROM(SELECT*FROM(SELECTCASEWHEN(GROUPING([档案号])=1)THEN'合计'ELSE[档案号]ENDAS'档案号',CASEWHEN(GROUPING([系列])=1)THEN'合计'ELSE[系列]ENDAS'系列',CASEWHEN(GROUPING([店长])=1)THEN'合计'ELSE[店长]ENDAS'店长',SUM(剩余次数)AS'总剩余',CASEWHEN(GROUPING([店名])=1)THEN'合计'ELSE[店名]ENDAS'店名'FROM##PudianCardGROUPBY[档案号],[店名],[店长],[系列]WITHcubeHAVINGGROUPING([店名])!=1ANDGROUPING([档案号])=1--ANDGROUPING([系列])=1)ASMUNIONALL(SELECT*FROM(SELECTCASEWHEN(GROUPING([档案号])=1)THEN'合计'ELSE[档案号]ENDAS'档案号',CASEWHEN(GROUPING([系列])=1)THEN'合计'ELSE[系列]ENDAS'系列',CASEWHEN(GROUPING([店长])=1)THEN'合计'ELSE[店长]ENDAS'店长',SUM(剩余次数)AS'总剩余',CASEWHEN(GROUPING([店名])=1)THEN'合计'ELSE[店名]ENDAS'店名'FROM##PudianCardGROUPBY[档案号],[店名],[店长],[系列]WITHcubeHAVINGGROUPING([店名])!=1ANDGROUPING([店长])!=1)ASP)UNIONALL(SELECT*FROM(SELECTCASEWHEN(GROUPING([档案号])=1)THEN'合计'ELSE[档案号]ENDAS'档案号',CASEWHEN(GROUPING([系列])=1)THEN'合计'ELSE[系列]ENDAS'系列',CASEWHEN(GROUPING([店长])=1)THEN'合计'ELSE[店长]ENDAS'店长',SUM(剩余次数)AS'总剩余',CASEWHEN(GROUPING([店名])=1)THEN'合计'ELSE[店名]ENDAS'店名'FROM##PudianCardGROUPBY[档案号],[店名],[店长],[系列]WITHcubeHAVINGGROUPING([店名])!=1ANDGROUPING([店长])!=1)ASW)UNIONALL(SELECT*FROM(SELECTCASEWHEN(GROUPING([档案号])=1)THEN'合计'ELSE[档案号]ENDAS'档案号',CASEWHEN(GROUPING([系列])=1)THEN'合计'ELSE[系列]ENDAS'系列',CASEWHEN(GROUPING([店长])=1)THEN'合计'ELSE[店长]ENDAS'店长',SUM(剩余次数)AS'总剩余',CASEWHEN(GROUPING([店名])=1)THEN'合计'ELSE[店名]ENDAS'店名'FROM##PudianCardGROUPBY[档案号],[店名],[店长],[系列]WITHcubeHAVINGGROUPING([店名])=1ANDGROUPING([店长])=1ANDGROUPING([档案号])=1)ASK))AST

2、rollup:功能跟cube相似

3、将某一列的数据作为列名,动态加载,使用存储过程,拼接字符串

DECLARE@stnvarchar(MAX)='';SELECT@st=@st+'max(casewhen[系列]='''+CAST([系列]ASVARCHAR)+'''then[总剩余]elsenullend)as['+CAST([系列]ASVARCHAR)+'],'FROM##GETGROUPBY[系列];print@st;

4、根据某一列分组,分别建表

SELECT'selectROW_NUMBER()over(orderby[卡项]desc)as[序号],[会员],[档案号],[卡项],[剩余次数],[员工],[店名]into'+ltrim([店名])+'from查询where[店名]='''+[店名]+'''ORDERBY[卡项]desc'FROM查询GROUPBY[店名]

以上是“SQLserver中cube多维数据集的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!