【问题标题】:Convert the data, split rows into columns in SQL在 SQL 中转换数据,将行拆分为列
【发布时间】:2021-08-06 23:07:22
【问题描述】:

您能帮我以以下格式显示表格输出吗?

表格数据

需要的输出

【问题讨论】:

  • 请包括 DBMS,而且,这些是国家名称中仅有的 5 个国家还是可能更多?
  • 嗨 Jayvee,我使用的是 SQL Server 2014,国家/地区可能或多或少。
  • 搜索“动态枢轴”。
  • 谢谢杰维和拉努。您的输入帮助我实现了所需的输出。

标签: sql sql-server pivot transform stuff


【解决方案1】:

如果您有详尽的国家/地区列表,则必须将所有国家/地区都包含在查询中,如果列表是动态的,那么这是一个问题,唯一的方法是使用动态 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

【讨论】:

  • 感谢 Jayvee,它正在工作。但我正在寻找动态查询。
【解决方案2】:

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

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.CountryName) 来自#temptest c FOR XML PATH(''), 类型 ).value('.', 'NVARCHAR(MAX)') ,1,1,'')

set @query = 'SELECT ObjectName, ' + @cols + ' 来自 ( 选择对象名称,国家名称,计数 来自#temptest ) X 枢 ( 最大值(计数) 国家名称在 (' + @cols + ') ) p'

执行(@query)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 2013-06-09
    相关资源
    最近更新 更多