【发布时间】:2012-03-09 22:37:29
【问题描述】:
我正在尝试构建一个包含两个交叉表和多个列的表。到目前为止,我有这个,当我运行它时
create table test2(city nvarchar(10), race nvarchar(30), sex nvarchar(10), age int)
insert into test2 values ('Austin', 'African-American', 'male', 21)
insert into test2 values ('Austin', 'Asian', 'female', 22)
insert into test2 values ('Austin', 'Caucasian', 'male', 23)
insert into test2 values ('Austin', 'Hispanic', 'female', 24)
insert into test2 values ('Austin', 'African-American', 'Unknown', 25)
insert into test2 values ('Austin', 'Asian', 'male', 26)
insert into test2 values ('Austin', 'Caucasian', 'female', 27)
insert into test2 values ('Austin', 'Hispanic', 'Unknown', 28)
insert into test2 values ('Austin', 'Asian', 'male', 29)
insert into test2 values ('Austin', 'Caucasian', 'female', 31)
insert into test2 values ('Dallas', 'Hispanic', 'Unknown', 32)
insert into test2 values ('Dallas', 'African-American', 'male', 33)
insert into test2 values ('Dallas', 'Asian', 'female', 34)
insert into test2 values ('Dallas', 'Caucasian', 'Unknown', 35)
insert into test2 values ('Dallas', 'Hispanic', 'male', 500)
insert into test2 values ('Dallas', 'African-American', 'female', 36)
insert into test2 values ('Dallas', 'Asian', 'Unknown', 37)
insert into test2 values ('Dallas', 'Caucasian', 'male', 38)
insert into test2 values ('Dallas', 'Hispanic', 'female', 39)
insert into test2 values ('Dallas', 'African-American', 'Unknown', 41)
insert into test2 values ('Houston', 'Asian', 'male', 42)
insert into test2 values ('Houston', 'Caucasian', 'female', 43)
insert into test2 values ('Houston', 'Hispanic', 'Unknown', 44)
insert into test2 values ('Houston', 'African-American', 'male', 45)
insert into test2 values ('Houston', 'Asian', 'female', 46)
insert into test2 values ('Houston', 'Caucasian', 'Unknown', 47)
insert into test2 values ('Houston', 'Hispanic', 'male', 48)
insert into test2 values ('Houston', 'African-American', 'female', 49)
insert into test2 values ('Houston', 'Asian', 'Unknown', 51)
insert into test2 values ('Houston', 'Caucasian', 'male', 52)
SELECT *
FROM
(
SELECT a.city, a.sex
FROM [AdventureWorksDW].[dbo].[test2] a
) p
PIVOT
(
COUNT (sex)
FOR sex
IN ([male], [female], [Unknown])
) AS pvt
我明白了
(来源:realestateagenthealthinsurance.com)
但我需要的是这个,顶部有两个交叉表和一个用于多列的选项。
(来源:realestateagenthealthinsurance.com)
这可以通过枢轴或任何其他解决方案实现吗? 提前致谢
【问题讨论】:
-
感谢提供示例数据脚本和图片
-
您真的想在边界上重叠年龄吗?还是第 20 到 29、30 到 39 和 40 到 49 组?
-
是的,你是对的 20 到 29、30 到 39 和 40 到 49。谢谢
-
@user973671 将 30 岁和 40 岁分成两组?您的标题重叠边界。 20 到 29 岁是十人一组:)
标签: sql sql-server-2008 pivot crosstab