在MS SQL Server中使用Pivot?
这是问题的链接 我是sql和这个社区的新手。那么提前,;我很抱歉,如果这是太基本的东西或我的查询太混乱 不管怎么说,我认为解决办法是以数据为中心。我写了一个查询,但没有成功。这是我的作品在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
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;
只需去掉窗口函数中用于计算行数的分区。嗨,欢迎使用堆栈溢出。我们很高兴你在这里。如果你告诉我们你打算查询做什么,这将有助于人们回答你的问题。否则,我们无法知道它是否解决了你的需要。不,我不会单击你的链接。请在本页中解释显示示例数据,以及给定该示例数据的查询结果的示例。