楼主:
vity (逍遥杯-佛得)
2015-03-06 01:19:56※ 引述《squallscer (羽毛)》之铭言:
: 数据库名称: SQL server 2008
: 数据库版本:R2
: 内容/问题描述:
: 假设有三个字段:
: id col1 col2
: 1 A B
: 2 B A
: 3 C C
: 4 A A
: 5 B C
: . . .
: . . .
: 希望产生一个列联表为:
: A B C
: A 1 1 0
: B 1 0 1
: C 0 0 1
: 在google中搜寻contingency table都没有找到答案
: 故来版上询问前辈该怎么写呢?
列连表是统计的东西
数据库把它叫做OLAP
SQL:1999就有开始OLAP
可以用 group by rollup 或 group by cube
资料仍然是以资料表的方式呈现
例如
select semester as date, country, sum(sales)
from sales
group by cube(semester,country)
会给下面的表
Date Country Sales
1st semester Ireland 20
1st semester France 126
1st semester Germany 56
1st semester null 202
2nd semester Ireland 23
2nd semester France 138
2nd semester Germany 48
2nd semester null 209
null Ireland 43
null France 264
null Germany 104
null null 411
group by cube其实跟下面的查询是一样的
select semester as date, country, sum(sales)
from sales group by semester, country
UNION select null as date, country, sum(sales)
from sales group by country
UNION select semester as date, null as country,
sum(sales) from sales group by country
UNION select null as date, null as country,
sum(sales) from sales
它的结果仍然不是pivot table, 这跟数据库结构有关
很需要一个pivot table的话
比较方便的是建一个cube
你可以用Analysis service建
再用MDX查询
就会给你一模一样的pivot table