如何合并具有相同名称 SQL 的行

How to Merge Rows with Same Name SQL Pivot

我正在尝试对 SQL 服务器中的一些数据进行非规范化,并且已经能够成功地转换引用 table,但希望能够像行一样进行合并。

枢轴执行如下

select distinct 
'name' = sFname + ' ' + sLname,
advanced, 
basic, 
standard

from
(select * from dbName..person where deleteFlag <> 'Y') as tableTemp
pivot (
  count(serviceType)
  for serviceType IN (advanced, basic, standard)
) as tablePivot

和returns

name      | advanced | basic | standard
----------+----------+-------+---------
abby a    |     1    |   0   |    0
abby a    |     0    |   1   |    0
charlie c |     0    |   1   |    0
charlie c |     0    |   0   |    1

但我想return这种形式

name      | advanced | basic | standard
----------+----------+-------+---------
abby a    |     1    |   1   |    0
charlie c |     0    |   1   |    1

原始数据的结构如下

sFname   | sLname   | serviceType |
---------+----------+-------------+
abby     |     a    |   advanced  |
abby     |     a    |   basic     |
charlie  |     c    |   basic     |
charlie  |     c    |   standard  |

我如何 运行 像 group byselect distinct 这样的操作到 return SQL 服务器中的合并枢轴 table?

您需要在 PIVOT 之前限制子查询中的列。

SELECT [name], 
       [advanced], 
       [basic], 
       [standard]
FROM   (
           SELECT 'name' = sFname + ' ' + sLname, 
                  serviceType
           FROM   person
           WHERE  deleteFlag <> 'Y'
       ) AS tableTemp 
PIVOT(COUNT(serviceType) FOR serviceType IN(advanced, basic, standard)) AS tablePivot;