转换数据,将行拆分为 SQL 中的列

Convert the data, split rows into columns in SQL

你能帮我用下面的格式显示 table 输出吗?

Table数据

需要输出

如果您有详尽的国家/地区列表,则必须在查询中包含所有国家/地区,如果该列表是动态的,那么这是一个问题,唯一的方法是动态 sql。请试试这个并告诉我们:

SELECT
  ObjectName,
  CZ,HQ,RO,BR,SK
FROM (
  SELECT * FROM yourtable
) AS X
PIVOT
(
  SUM(counts)
  FOR CountryName
  IN (
    [CZ],[HQ],[RO],[BR],[SK]
  )
) AS PivotX

声明@cols 为 NVARCHAR(MAX), @query AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT 不同的 ',' + QUOTENAME(c.CountryName) 来自#temptest c FOR XML 路径(''),类型 ).value('.', 'NVARCHAR(MAX)') ,1,1,'')

set @query = 'SELECT ObjectName, ' + @cols + ' 来自 ( select 对象名称、国家名称、计数 来自#temptest ) X 枢 ( 最大(计数) 对于 (' + @cols + ') 中的 CountryName ) p'

执行(@query)