【问题标题】:How to Pivot Column Headers in Rows如何在行中旋转列标题
【发布时间】:2023-03-06 01:18:02
【问题描述】:

我有如下表格

   ID   FName    LName
   r1   Tom      Patrik
   r2   Jerry    Blaku
   r1   Ethan    Lie

我想要以下内容

   ID      r1       r2      r1
   FName   Tom      Jerry   Ethan
   LName   Patrik   Blaku   Lie 

请注意,ID 中的值不是不同的......! 是否可以使用 sql Server Pivot(或任何)命令来实现这一点, 如果是的话,我会非常感谢 TSQL

【问题讨论】:

标签: sql sql-server-2008


【解决方案1】:

我确信有更好的方法来做到这一点。但是,由于您尝试在此处旋转多个列,因此这是一个丑陋的解决方案:

create table #temp
(
    id int,
    fname varchar(50),
    lname varchar(50)
)

insert into #temp values(1, 'Tom', 'Patrik')
insert into #temp values(2, 'Jerry', 'Blaku')

SELECT 'fname', P.Tom as '1', P.Jerry as '2'
FROM
(
    SELECT fname
    FROM #temp
) I
PIVOT
(
    min(fname)
    FOR [fname] IN ([Tom], [Jerry])
) as P
UNION
SELECT 'lname', P.Patrik as '1', P.Blaku as '2'
FROM
(
    SELECT lname
    FROM #temp
) I
PIVOT
(
    min(lname)
    FOR [lname] IN ([Patrik], [Blaku])
) as P

drop table #temp

【讨论】:

  • 感谢您的回答。我实际上有非常复杂的查询,我无法为每一行编写数据透视表。我提到了一个非常简单的表格,只是为了了解如何使用 Pivot 来做到这一点。
  • 您可以尝试使用动态 sql pivot。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
相关资源
最近更新 更多