如何在不使用pivot命令的情况下透视SQL中的数据

如何在不使用pivot命令的情况下透视SQL中的数据,sql,excel,pivot,Sql,Excel,Pivot,我当前表格的示例: ID类型 1A 1b 2A 2 B 2 C 期望输出: 我是一二三 1 A B空 2 A B C 基本上,我希望将列类型中的值转换为新列(一、二、三等),并将类型中的值放置在这些列中。每个ID将只有一行,而不是多行 由于perm的限制,我无法在SQL中使用PIVOT语句,但是否有其他方法可以在SQL或Excel中创建此语句?您可以这样做: select id, max(case when type='a' then type else null end) one, max

我当前表格的示例:

ID类型 1A

1b

2A

2 B

2 C

期望输出:

我是一二三 1 A B空

2 A B C

基本上,我希望将列类型中的值转换为新列(一、二、三等),并将类型中的值放置在这些列中。每个ID将只有一行,而不是多行

由于perm的限制,我无法在SQL中使用PIVOT语句,但是否有其他方法可以在SQL或Excel中创建此语句?

您可以这样做:

select id, max(case when type='a' then type else null end) one,   max(case when type='b' then type else null end) two,
max(case when type='c' then type else null end) three
from #temp1
group by id

这是我见过的常见做法:

SELECT DISTINCT t.ID,
    a.Type AS "One",
    b.Type AS "Two",
    c.Type AS "Three"
FROM Table t
LEFT JOIN Table a
    ON  a.ID   = t.ID
    AND a.Type = 'A'
LEFT JOIN Table b
    ON  b.ID   = t.ID
    AND b.Type = 'B'
LEFT JOIN Table c
    ON  c.ID   = t.ID
    AND c.Type = 'C'
与枢轴相比,它的效率非常低。与使用@DanielMarcus提供的
MAX()
方法相比,此方法的唯一优点是,即使列的数据类型不支持聚合,此方法也可以工作,但聚合方法的性能可能更好


也就是说,如果你有选择的权限,那么我不明白你为什么没有旋转的权限。唯一的问题可能是您正在使用的数据库没有将其兼容级别设置为90(SQL Server 2005)或更高,我认为这是必需的。

您没有使用
PIVOT
的权限,但您可以以其他方式查询数据?只需使用excel中的PIVOT表,然后也可以使用SQL Server?