您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

试图将行平整为列

试图将行平整为列

此数据转换称为PIVOT。在sql Server 2005+中,有一个函数可以执行此过程。:

select *
from
(
  SELECT * 
  FROM mytable
) src
pivot
(
  max(value)
  for field in (first, last)
) piv

请参阅带有演示的SQL Fiddle

或者,您可以将聚合函数CASE表达式一起使用:

select rowid,
  max(case when field = 'first' then value end) first,
  max(case when field = 'last' then value end) last
from MyTable
group by rowid

请参阅带有演示的SQL Fiddle

您还可以在表上使用多个联接:

select t1.rowid,
  t1.value first,
  t2.value last
from mytable t1
left join mytable t2
  on t1.rowid = t2.rowid
  and t2.field = 'last'
where t1.field = 'first'

参见带有演示的SQL Fiddle

所有版本的结果都相同:

| ROWID | FIRST |  LAST |
-------------------------
|     1 |  neil | young |
|     2 |   bob | dylan |
|     3 |   tom | petty |
其他 2022/1/1 18:38:35 有513人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶