开发者社区> 问答> 正文

将列值设置为SQL查询结果中的列名?mysql

我想读取一个表,该表的值将是sql查询结果的列名。例如,我将table1作为..

id col1 col2

0 name ax 0 name2 bx 0 name3 cx 1 name dx 1 name2 ex 1 name3 fx
如果看到id = 0,则name的值为ax,name2为bx,name3为cx。将行显示为id,name,name2,name3而不是行。现在,我希望查询结果看起来像这样:

id name name2 name3 0 ax bx cx 1 dx ex fx 有人可以帮助我实现这一目标吗?

展开
收起
保持可爱mmm 2020-05-17 19:51:45 1293 0
1 条回答
写回答
取消 提交回答
  • 这是通过数据透视表完成的。按分组id,您CASE为要在列中捕获的每个值发出语句,并使用诸如MAX()聚合之类的方法消除空值并折叠成一行。

    SELECT id, /* if col1 matches the name string of this CASE, return col2, otherwise return NULL / / Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per 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 name3 FROM yourtable GROUP BY id ORDER BY id 这是一个工作样本 注意:这仅适用于有限且已知数量的可能值col1。如果可能值的数量未知,则需要在循环中动态构建SQL语句。来源:stack overflow

    2020-05-17 20:30:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载

相关镜像