转换数据,将行拆分为 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)
你能帮我用下面的格式显示 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)