SQL 没有数据透视功能的行成列

SQL Row into Columns without Pivot function

当我想将一个 id 的行转换为列时,我正在努力解决这个看似简单的问题。所以列中会有 X,如果该 ID 具有具有该值的行但没有使用 PIVOT,因为我不在 11g 上,所以它需要一些古老的方式 :) 如果这是可能的,我相信只是无法破解靠我自己。感谢喜欢挑战并认为看起来很容易但实际上并非如此的人的帮助:/

所以如果我有

ID Access DB1 DB2 DC1
1  DB1    x 0 0
1  DB2    0 0 0
1  DC1    0 0 x
2  DB1    x 0 0
2  DB2    0 x 0
3  DC1    0 0 x

所以我要查找的结果只有 3 行

ID DB1 DB2 DC1
1  x   0  x
2  x   x  0
3  0   0  x

https://data.stackexchange.com/Whosebug/query/edit/1338592

我想知道我不会有这 3 个其他专栏而只有前两个。将行转换为列的方式是什么。首先,如果有确切的数字,那么在我们的例子中有 3 列 DB1、DB2 和 DC1,如果不知道数字怎么办,那么所有不同的行都将创建新列。任何人挑战。

输入 1

ID Access
1 DB1 
1 DB2 
1 DC1 
2 DB1 
2 DB2 
3 DC1 

结果 1

ID DB1 DB2 DC1 
1 DB1 DB2 DC1 
2 DB1 DB2 
3         DC1

看起来你想要max():

select id, max(db1), max(db2), max(db3)
from t
group by id;