如何在不使用pivot命令的情况下透视SQL中的数据
我当前表格的示例: ID类型 1A 1b 2A 2 B 2 C 期望输出: 我是一二三 1 A B空 2 A B C 基本上,我希望将列类型中的值转换为新列(一、二、三等),并将类型中的值放置在这些列中。每个ID将只有一行,而不是多行 由于perm的限制,我无法在SQL中使用PIVOT语句,但是否有其他方法可以在SQL或Excel中创建此语句?您可以这样做:如何在不使用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
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?