具有两个交叉表和多列的 Sql 数据透视表
我正在尝试构建一个具有两个交叉表和多个列的表。到目前为止我已经有了这个,当我运行它时,
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)
这可以通过枢轴实现吗或任何其他解决方案? 提前致谢
I am trying to build a table with two cross tabs and multiple columns. I have this so far, and when I run it
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
I get this
(source: realestateagenthealthinsurance.com)
But what I need is this, with two cross tabs on top and a option for multiple columns.
(source: realestateagenthealthinsurance.com)
Is this possible with a pivot or any other solution?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以为 3 个年龄组中的每一个运行单独的 PIVOT 查询,然后将结果外部联接到当前城市和性别的查询:
You can run a separate PIVOT query for each of the 3 age groups, and then outer join the results to a query of the city and sex present: