Sql server SQL Server在对列上取消PIVOT
我为这个措辞拙劣的标题道歉,我不知道该如何描述这个问题 我在SQL Server 2008中有一个表,除了不可靠的模式外,它看起来像这样: 我希望处理给定“名称”的查询以生成以下结果: 我看了很多透视表示例,并得出了一些不确定的结果。我在高级复杂查询方面没有太多的实践Sql server SQL Server在对列上取消PIVOT,sql-server,sql-server-2008,unpivot,Sql Server,Sql Server 2008,Unpivot,我为这个措辞拙劣的标题道歉,我不知道该如何描述这个问题 我在SQL Server 2008中有一个表,除了不可靠的模式外,它看起来像这样: 我希望处理给定“名称”的查询以生成以下结果: 我看了很多透视表示例,并得出了一些不确定的结果。我在高级复杂查询方面没有太多的实践 编辑:这里有一个SQL Fiddle链接:不清楚您想要什么,但这里有一个查询来获取您的输出结果: select 'DESCRIPTOR1' as Descr, DESCRIPTOR1A as A,
编辑:这里有一个SQL Fiddle链接:不清楚您想要什么,但这里有一个查询来获取您的输出结果:
select 'DESCRIPTOR1' as Descr,
DESCRIPTOR1A as A,
DESCRIPTOR1B as B
from mytable
where Name='Bob'
UNION ALL
select 'DESCRIPTOR2' as Descr ,
DESCRIPTOR2A as A,
DESCRIPTOR2B as B
from mytable
where Name='Bob'
或者,如果所有名称都需要它:
select Name,
'DESCRIPTOR1' as Descr,
DESCRIPTOR1A as A,
DESCRIPTOR1B as B
from mytable
UNION ALL
select Name,
'DESCRIPTOR2' as Descr ,
DESCRIPTOR2A as A,
DESCRIPTOR2B as B
from mytable
ORDER BY 1,2
不清楚您想要什么,但这里有一个查询来获取您的输出结果:
select 'DESCRIPTOR1' as Descr,
DESCRIPTOR1A as A,
DESCRIPTOR1B as B
from mytable
where Name='Bob'
UNION ALL
select 'DESCRIPTOR2' as Descr ,
DESCRIPTOR2A as A,
DESCRIPTOR2B as B
from mytable
where Name='Bob'
或者,如果所有名称都需要它:
select Name,
'DESCRIPTOR1' as Descr,
DESCRIPTOR1A as A,
DESCRIPTOR1B as B
from mytable
UNION ALL
select Name,
'DESCRIPTOR2' as Descr ,
DESCRIPTOR2A as A,
DESCRIPTOR2B as B
from mytable
ORDER BY 1,2
将列转换为行的过程称为UNPIVOT。由于您使用的是SQL Server 2008,因此可以将交叉应用与值构造函数一起使用以获得结果:
select type, A, B
from mytable
cross apply
(
values
('Descriptor1', Descriptor1A, Descriptor1B),
('Descriptor2', Descriptor2A, Descriptor2B)
) c (type, A, B)
where name = 'Bob';
请参见将列转换为行的过程称为UNPIVOT。由于您使用的是SQL Server 2008,因此可以将交叉应用与值构造函数一起使用以获得结果:
select type, A, B
from mytable
cross apply
(
values
('Descriptor1', Descriptor1A, Descriptor1B),
('Descriptor2', Descriptor2A, Descriptor2B)
) c (type, A, B)
where name = 'Bob';
请参见我将对问题进行编辑以使其更加清晰,但在这种情况下,查询将使用name=“Bob”。“John”行是无关的信息。我将编辑问题以使其更清楚,但在这种情况下,查询将使用name=“Bob”。“约翰”一行是无关信息。是的,它不是一个支点。是的,它不是一个支点。如果我能接受多个答案就好了。我甚至不知道交叉申请的存在!我还没有找到这类事情的可靠参考资料。@ubertastic没问题,我只是想展示另一种方法要是我能接受不止一个答案就好了。我甚至不知道交叉申请的存在!我还没有找到这类事情的可靠参考资料。@ubertastic没问题,我只是想展示另一种方法