SQL Server中的高级行到列转换(透视表)

原学程将引见SQL Server中的高等言到列转换(透望表)的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

SQL Server中的高级行到列转换(透视表) 教程 第1张

成绩描写

我有这个表:

---------------------------------------
| Id | worker | workStation| amount 
---------------------------------------
| 一  | John| Suspension |  五
| 二  | John| Wheels  |  8
| 三  | Peter  | Wheels  |  一
| 四  | Peter  | Engines |  二
---------------------------------------

我须要显示以下实质的盘问:

-------------------------------------------
| worker  | Suspension | Wheels | Engines
-------------------------------------------
| John |  五|8 |NULL
| Peter|  NULL|一 |二
-------------------------------------------

借助
Efficiently convert rows to columns in sql server以及
https://docs.microsoft.com/es-es/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-ver一五(重要是第1个)我做到了:

---------------------------------
| Suspension |  Wheels| Engines
---------------------------------
|  五|8 |NULL
|  NULL|一 |二
---------------------------------

这简直便是我所须要的,但是我依然缺乏懂得任务职员称号的列。

我须要应用未知数目的任务站去透望盘问。
我的代码是:

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX)

select @cols =  STUFF((SELECT ',' + QUOTENAME(workStation)
  FROM TableName
  group by workStation
  ORDER BY workStation
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') 
  ,一,一,'')

set @query = N'SELECT ' + @cols + N' from 
 (
 SELECT amount, worker, workStation
 FROM TableName
) x
pivot 
(
 max(amount)
 for workStationin (' + @cols + N')
) p '

exec sp_executesql @query;

我怎样能力找到这1缺掉的列?
提早感激您。

推举谜底

您不妨选择任务职员,假如没有想反复言,不妨按任务职员分组

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX)

select @cols =  STUFF((SELECT ',' + QUOTENAME(workStation)
 FROM TableName
 group by workStation
 ORDER BY workStation
  FOR XML PATH(''), TYPE
  ).value('.', 'NVARCHAR(MAX)') 
 ,一,一,'')

set @query = N'SELECT worker,' + @cols + N' from 
(
SELECT amount, worker, workStation
FROM TableName
  ) x
  pivot 
  (
max(amount)
for workStationin (' + @cols + N')
  ) p '

exec sp_executesql @query;

佳了闭于SQL Server中的高等言到列转换(透望表)的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。