mysql使用动态行值作为列名

ozxc1zmp  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(407)

我有一组由多个表构建的数据(视图表)。

我的问题是,我不能以“水平”方式显示它们。我搜索并找到了几种解决方案,但它们现在已经过时了。
它们使用透视表、交叉表查询或组concat()。
因此,我需要的结果是,动态boxname将是一个列名,而价格将在每个列名下。然后路由将是行标题。
我的目标:

我试着通过jquery操作数据,但是失败了,所以我的最后一个办法是修复mysql数据,这样jquery的显示就很容易了。
非常感谢您的帮助。

rqenqsqc

rqenqsqc1#

第1步:获取列名:

select distinct BoxName from t

例如,此查询将返回:

BoxName
-----------
Small Box    
Medium Box
Large Box
Regular Box
Jumbo Box

第二步:组装一个动态查询。现在您已经知道了列,可以将主查询准备为:

select
  Route,
  max(case when BoxName = 'Small Box' then price end) as `Small Box`,
  max(case when BoxName = 'Medium Box' then price end) as `Medium Box`,
  max(case when BoxName = 'Large Box' then price end) as `Large Box`,
  max(case when BoxName = 'Regular Box' then price end) as `Regular Box`,
  max(case when BoxName = 'Jumbo Box' then price end) as `Jumbo Box`
from t
group by Route
order by max(display_order)

相关问题