表:职业(姓名、职业)

Name    Profession
Zahid   Engineer
Rakib   Doctor
David   Singer
Farid   Player
Arif    Doctor
Tarik   Singer

预期输出:

Doctor Engineer Singer Player
Rakib  Zahid    David  Farid
Arif   NULL     Tarik  NULL

我试过:

Select Doctor, Engineer, Singer, Player 
from 
( Select [Name], Profession from Occupation ) T1
PIVOT
(Max([Name]) for Profession IN ( Doctor, Engineer, Singer, Player)) T2

但是,它只输出一行:

Doctor  Engineer    Singer  Player
Rakib   Zahid   Tarik   Farid

推荐答案

没有订单的GTD

Select *
 From  (
        Select [Name]
              ,[Profession]
              ,RN = row_number() over (partition by Profession order by Profession) 
         from Occupation 
       ) src
 Pivot (Max([Name]) for Profession IN ( Doctor, Engineer, Singer, Player)) pvt

Results

RN  Doctor  Engineer    Singer  Player
1   Rakib   Zahid       David   Farid
2   Arif    NULL        Tarik   NULL

Sql相关问答推荐

SUM(条件)在Oracle?

查询多个表并返回合并在联合列上的所有表中的所有行

在SQL中使用类别值将行转置为列

PostgreSQL中的合并命令是原子的,还是需要一些类似于SQL Server版本的内容?

如何在snowflake中进行SQL的反向填充

在Oracle SQL中将列值转换为行

基于唯一值在Access查询中创建计数器

从列中提取子字符串的ORDER BY CASE语句

数据库SQL PARSE_SYNTAX_ERROR

如何将insert语句重复n次使一个值递增?

SQL查询正在工作,但返回空结果

用另一个表中的特定名称替换 SQL 查询中的 ID.但我的两个表都有多个列

DbUp for sqlserver 在 dbo 授权下为非 dbo 用户创建架构

如何根据 Google BigQuery 中的特定列值连接一列的 N 行?

没有调用子查询的嵌套 JOIN语法是什么?

将varchar (7)列转换为datetime

SQL中如何转置表格 UNPIVOT是唯一的 Select 吗?

使用in和and运算符过滤记录的条件

MIN MAX 值与条件绑定

每组跨行曲折?