【发布时间】:2018-02-23 08:48:26
【问题描述】:
我正在使用 PIVOT 子句来转换这些数据:
ComponenteID Descripcion PosicionID Email Nivel
------------ ---------------------------------------- ----------- ------------------------------------------------------------ -----
9 Maquinaria 19 monica.rodriguez@definity.com 1
9 Maquinaria 19 monica.rodriguez@definity.com 2
9 Maquinaria 19 monica.rodriguez@definity.com 3
9 Maquinaria 150 fulano.detal@definityfirst.com 1
收件人:
TipoComponenteId Descripcion AprobadoresNivel1 AprobadoresNivel2 AprobadoresNivel3
---------------- ---------------------------------------- ----------------------------------------------------------------------------------- ----------------------------------------------------------------------------------- -----------------------------------------------------------------------------------
9 Maquinaria 19 - monica.rodriguez@definity.com, 150 - fulano.detal@definity.com 19 - monica.rodriguez@definity.com 19 - monica.rodriguez@definity.com
但是因为 MAX 子句偏离路线只在 AprobedoresNivel1(第三列)中显示一个元素(见下文)
TipoComponenteId Descripcion AprobadoresNivel1 AprobadoresNivel2 AprobadoresNivel3
---------------- ---------------------------------------- ----------------------------------------------------------------------------------- ----------------------------------------------------------------------------------- -----------------------------------------------------------------------------------
9 Maquinaria 19 - monica.rodriguez@definityfirst.com 19 - monica.rodriguez@definityfirst.com 19 - monica.rodriguez@definityfirst.com
有没有办法在 PIVOT 子句中使用 group by?还有其他方法可以做到这一点吗?
【问题讨论】:
-
PIVOT 对行进行隐式分组,否则将无法使用
MAX或任何其他聚合函数。发布您的查询 -
顺便说一句,创建像
19 - monica.rodriguez@definity.com, 150 - fulano.detal@definity.com这样的值的唯一方法是使用STRING_AGG,它在 SQL Server 2017 中可用。也许您真正的问题是如何在早期版本中聚合字符串?跨度> -
我使用的是 sql server 2017,我的目标是将数据显示为问题中的第三个表。我的第一种方法是数据透视表,但如果有人知道可以指出我的更好方法,我会很乐意尝试。
标签: sql-server tsql pivot