【发布时间】:2018-03-13 03:37:53
【问题描述】:
这是一道测试题。我有一个有两列的表。我想以其中一个为中心并输出另一个。
表结构:
(Name varchar(10), Age int)
我需要将年龄值作为列的输出,并在每个年龄值下方列出名称。
通过搜索,我只看到至少有一个其他列用于“分组依据”的示例,因为需要更好的术语。换句话说,输出的每一行都有一个公因子。我的问题没有这个属性。
我试过了:
SELECT
[agevalue1], [agevalue2], [agevalue3], [agevalue4]
FROM
(SELECT Name, Age FROM MyClass) AS SourceTable
PIVOT
(MAX(Name)
FOR Age IN ([agevalue1], [agevalue2], [agevalue3], [agevalue4])
) AS PivotTable;
我将 agevalue* 指定为字符串,即用引号引起来。我的列标题没问题,但在它们下面有一排 NULLS。
P.S.:解决方案不需要使用 pivot 但我想不出替代方法。
样本数据:
Name Age
Bob 11
Rick 25
Nina 30
Sam 11
Cora 16
Rachel 25
期望的输出:
11 16 25 30
Bob Cora Rick Nina
Sam NULL Rachel NULL
【问题讨论】:
标签: sql sql-server pivot