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

根据需要使用union all 拼接
判断 某一列的null值来自源数据还是 cube 使用GROUPING关键字
GROUPING([档案号]) = 1 : null值来自cube(代表所有的档案号)
GROUPING([档案号]) = 0 : null值来自源数据

举例:

 SELECT  * INTO ##GET
FROM
(
SELECT
*
FROM
(
SELECT
CASE
WHEN (GROUPING([档案号]) = 1) THEN
'合计'
ELSE
[档案号]
END AS '档案号',
CASE
WHEN (GROUPING([系列]) = 1) THEN
'合计'
ELSE
[系列]
END AS '系列',
CASE
WHEN (GROUPING([店长]) = 1) THEN
'合计'
ELSE
[店长]
END AS '店长',
SUM (剩余次数) AS '总剩余',
CASE
WHEN (GROUPING([店名]) = 1) THEN
'合计'
ELSE
[店名]
END AS '店名'
FROM
##PudianCard
GROUP BY
[档案号],
[店名],
[店长],
[系列] WITH cube
HAVING
GROUPING([店名]) != 1
AND GROUPING([档案号]) = 1 --AND GROUPING([系列]) = 1
) AS M
UNION ALL
(
SELECT
*
FROM
(
SELECT
CASE
WHEN (GROUPING([档案号]) = 1) THEN
'合计'
ELSE
[档案号]
END AS '档案号',
CASE
WHEN (GROUPING([系列]) = 1) THEN
'合计'
ELSE
[系列]
END AS '系列',
CASE
WHEN (GROUPING([店长]) = 1) THEN
'合计'
ELSE
[店长]
END AS '店长',
SUM (剩余次数) AS '总剩余',
CASE
WHEN (GROUPING([店名]) = 1) THEN
'合计'
ELSE
[店名]
END AS '店名'
FROM
##PudianCard
GROUP BY
[档案号],
[店名],
[店长],
[系列] WITH cube
HAVING
GROUPING([店名]) != 1
AND GROUPING([店长]) != 1
) AS P
)
UNION ALL
(
SELECT
*
FROM
(
SELECT
CASE
WHEN (GROUPING([档案号]) = 1) THEN
'合计'
ELSE
[档案号]
END AS '档案号',
CASE
WHEN (GROUPING([系列]) = 1) THEN
'合计'
ELSE
[系列]
END AS '系列',
CASE
WHEN (GROUPING([店长]) = 1) THEN
'合计'
ELSE
[店长]
END AS '店长',
SUM (剩余次数) AS '总剩余',
CASE
WHEN (GROUPING([店名]) = 1) THEN
'合计'
ELSE
[店名]
END AS '店名'
FROM
##PudianCard
GROUP BY
[档案号],
[店名],
[店长],
[系列] WITH cube
HAVING
GROUPING([店名]) != 1
AND GROUPING([店长]) != 1
) AS W
)
UNION ALL
(
SELECT
*
FROM
(
SELECT
CASE
WHEN (GROUPING([档案号]) = 1) THEN
'合计'
ELSE
[档案号]
END AS '档案号',
CASE
WHEN (GROUPING([系列]) = 1) THEN
'合计'
ELSE
[系列]
END AS '系列',
CASE
WHEN (GROUPING([店长]) = 1) THEN
'合计'
ELSE
[店长]
END AS '店长',
SUM (剩余次数) AS '总剩余',
CASE
WHEN (GROUPING([店名]) = 1) THEN
'合计'
ELSE
[店名]
END AS '店名'
FROM
##PudianCard
GROUP BY
[档案号],
[店名],
[店长],
[系列] WITH cube
HAVING
GROUPING([店名]) = 1
AND GROUPING([店长]) = 1
AND GROUPING([档案号]) = 1
) AS K
)
) AS T
2、rollup:功能跟cube相似

3、将某一列的数据作为列名,动态加载,使用存储过程,拼接字符串
DECLARE @st nvarchar (MAX) = '';

SELECT
@st =@st + 'max(case when [系列]=''' + CAST ([系列] AS VARCHAR) + ''' then [总剩余] else null end ) as [' + CAST ([系列] AS VARCHAR) + '],'
FROM
##GET
GROUP BY
[系列];
print @st;

4、根据某一列分组,分别建表
SELECT
'select ROW_NUMBER() over(order by [卡项] desc) as [序号], [会员],[档案号],[卡项],[剩余次数],[员工],[店名] into ' + ltrim([店名]) + ' from 查询 where [店名]=''' + [店名] + ''' ORDER BY [卡项] desc'
FROM
查询
GROUP BY
[店名]

sqlserver——cube:多维数据集的更多相关文章

  1. BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备

    上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很 ...

  2. 《BI项目笔记》创建多维数据集Cube(1)

    有两个事实表,因此就有两个度量值组,并且向导将为非维度键的事实表中的每一个数值列创建一个度量值.由于我们这里不需要那么多,所以只选择部分度量值.另外要注意,度量值的名称源于事实表中的列,所有名称由可能 ...

  3. BI之SSAS完整实战教程5 -- 详解多维数据集结构

    之前简单介绍过多维数据集(Cube)的结构. 原来计划将Cube结构这部分内容打散,在实验中穿插讲解, 考虑到结构之间不同的部分都有联系,如果打散了将反而不好理解,还是直接一次性全部讲完. 本篇我们将 ...

  4. BI之SSAS完整实战教程3 -- 创建第一个多维数据集

    上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...

  5. 8第八章CTE递归及分组汇总高级部分(多维数据集)(转载)

    8第八章CTE递归及分组汇总高级部分(多维数据集) 这里贴图太麻烦...算了 UNION 等集合操作符: UNION 等以第一个 SELECT  的 列明 作为 整个结果集的列明,整个结果集 唯一认可 ...

  6. SSAS系列——【03】多维数据(多维数据集对象)

    原文:SSAS系列--[03]多维数据(多维数据集对象) 1.什么是Cube? 简单 Cube 对象由基本信息.维度和度量值组组成. 基本信息包括多维数据集的名称.多维数据集的默认度量值.数据源和存储 ...

  7. 创建和使用SQL Server SSAS本地多维数据集

    Microsoft SQL Server SSAS的本地多维数据集(即Local Cube,也叫脱机多维数据集)和本地挖掘模型(Local Mining Models)允许在客户端机器上脱机执行离线分 ...

  8. 微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many

    开篇介绍 对于维度成员和事实数据直接的关系看到更多的可能还是一对一,一对多的关系.比方在事实维度(或退化维度)中一个订单和明细号组合而成的ID,对应的就是事实表中的一条数据,这就是一对一的关系.比方说 ...

  9. 微软BI 之SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension

    在 CUBE 设计过程中有一个非常重要的点就是定义维度与度量值组关系,维度的创建一般在前,而度量值组一般来源于一个事实表.当维度和度量值组在 CUBE 中定义完成之后,下一个最重要的动作就是定义两者之 ...

随机推荐

  1. nohup & expect & netstat学习

    1.nohup 用途:不挂断地运行命令,通常加上‘&’命令,& 放在命令后面表示设置此进程为后台进程.分为两种情况,如下: 在不使用密码的情况下使用nohup,只需按如下形式即可: n ...

  2. JavaScript和Ajax部分(4)

    31. 什么是jQuery选择器 1)jQuery选择器继承了CSS与Path语言的部分语法,允许通过标签名.属性名或内容对DOM元素进行快速.准确的选择,而不必担心浏览器的兼容性,通过jQuery选 ...

  3. SpringCloud2.0入门4-springboot-admin监控

    前言 上一节为springboot项目添加springboot-admin监控 学习了基于springboot1.5自己注册到admin的方法.接下来学习结合Eureka使用以及2.0的改变. 1.5 ...

  4. OpenResty api网关设计

    本文讲述 OpenResty api网关设计,主要涉及api网关介绍.openresty api网关 请求路由(路由判断.路由重写.服务判断.限流).授权验证(统一认证).动态Upstream 以及这 ...

  5. HBuilder的安装及用法

    一,简介HBuilder 1.1,什么是Hbuilder? HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE.HBuilder的编写用到了Java.C.Web和Ru ...

  6. 使用 Synchronized 关键字

    使用 Synchronized 关键字来解决并发问题是最简单的一种方式,我们只需要使用它修饰需要被并发处理的代码块.方法或字段属性,虚拟机自动为它加锁和释放锁,并将不能获得锁的线程阻塞在相应的阻塞队列 ...

  7. 浅谈缓存技术在ASP.NET中的运用

    本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可,具体的架构, ...

  8. openssl dhparam(密钥交换)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html openssl dhparam用于生成和管理dh文件.dh(Diffie-H ...

  9. 绝对路径的表示方式为什么是"/usr"而不是"//usr"

    今天闲逛贴吧,竟然看到有个人问绝对路径的表示方式为什么不是//usr/local而是/usr/local.原文: 我想99%的人都没想过这个问题,都理所当然的认为:它不就是根"/" ...

  10. 使用MySQL组复制的限制和局限性

    本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...