Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MS SQL Server中使用Pivot?_Sql_Sql Server_Pivot_Aggregate Functions_Window Functions - Fatal编程技术网

在MS SQL Server中使用Pivot?

在MS SQL Server中使用Pivot?,sql,sql-server,pivot,aggregate-functions,window-functions,Sql,Sql Server,Pivot,Aggregate Functions,Window Functions,这是问题的链接 我是sql和这个社区的新手。那么提前,;我很抱歉,如果这是太基本的东西或我的查询太混乱 不管怎么说,我认为解决办法是以数据为中心。我写了一个查询,但没有成功。这是我的作品 Select [Doctor],[Profesor], [Singer],[Actor] from (select row_number() over (partition by occupation order by name) [RowNumber], * from occupations ) as t

这是问题的链接

我是sql和这个社区的新手。那么提前,;我很抱歉,如果这是太基本的东西或我的查询太混乱

不管怎么说,我认为解决办法是以数据为中心。我写了一个查询,但没有成功。这是我的作品

Select [Doctor],[Profesor], [Singer],[Actor] 
from
(select row_number() over (partition by occupation order by name) [RowNumber], * from occupations ) as ttable
PIVOT
(
max(name) for occupation in ([Doctor],[Profesor],[Singer],[Actor])
)
as pivottable;

我想不出这个查询中的问题在哪里。你们能给我一些启发吗?

我喜欢为此使用条件聚合:它比
pivot
更灵活,通常可以跨数据库移植(与特定于供应商的
pivot
s相反),并且至少可以执行定制的语法:

select 
    max(case when occupation = 'Doctor'    then name end) as doctor,
    max(case when occupation = 'Professor' then name end) as professor,
    max(case when occupation = 'Singer'    then name end) as singer,
    max(case when occupation = 'Actor'     then name end) as actor
from (
    select o.*,
        row_number() over(partition by occupation order by name) rn
    from occupations o
) o
group by rn
Max(Case…
aggregate选项工作得很好,我经常使用它,但您与您的轴心非常接近:

Select [Doctor],[Professor], [Singer],[Actor] 
from(
    select row_number() over (order by name) [RowNumber], * from Occupations 
) as ttable
PIVOT(
  max(name) for occupation in ([Doctor],[Professor],[Singer],[Actor])
)
as pivottable;

只需去掉窗口函数中用于计算行数的分区。

嗨,欢迎使用堆栈溢出。我们很高兴你在这里。如果你告诉我们你打算查询做什么,这将有助于人们回答你的问题。否则,我们无法知道它是否解决了你的需要。不,我不会单击你的链接。请在本页中解释显示示例数据,以及给定该示例数据的查询结果的示例。