这是通过 数据透视表完成的 。按分组
id,您
CASE为要在列中捕获的每个值发出语句,并使用诸如
MAX()聚合之类的方法消除空值并折叠成一行。
SELECt id, MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name, MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2, MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3FROM yourtableGROUP BY idORDER BY id
这是一个工作样本
注意:这仅适用于有限且已知数量的可能值
col1。如果可能值的数量未知,则需要在循环中动态构建SQL语句。



