基于值转置SQL选择

基于值转置SQL选择,sql,sql-server,pivot,Sql,Sql Server,Pivot,给定表格: create table test(obj varchar(99), prop varchar(99), val varchar(99)); insert into test (obj , prop , val ) values ('this', 'type A', 'foo'); insert into test (obj , prop , val ) values ('this', 'type B', 'bar'); insert into test (obj , prop ,

给定表格:

create table test(obj varchar(99), prop varchar(99), val varchar(99));

insert into test (obj , prop , val ) values ('this', 'type A', 'foo');
insert into test (obj , prop , val ) values ('this', 'type B', 'bar');
insert into test (obj , prop , val ) values ('this', 'type C', 'asd');
insert into test (obj , prop , val ) values ('that', 'type B', 'buz');
insert into test (obj , prop , val ) values ('that', 'type A', 'qwe');
如何选择以下选项:

| obj | type A | type B | type C|
  this  foo      bar      asd
  that  qwe      buz      NULL
这不是重复的“将所有行转到cols”问题;不同之处在于条件-值可以根据类型转到多个列。

试试看

select obj, [type A], [type B], [type C]
from test
pivot (max(val) for prop in ([type A], [type B], [type C])) B

您使用的是哪种dbms?通常,任何特定的SQL查询都会生成一个具有特定“形状”的结果集—列的数量、名称和数据类型是固定的。可能必须动态地构造查询,而用于构造查询的工具在数据库系统之间有所不同。因此,请按照标签的建议,添加一个合适的标签。编辑以回答上述问题。超过2种类型,MS SQL。