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;
当我想将一个 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;