根据列值动态获取列名
Posted
技术标签:
【中文标题】根据列值动态获取列名【英文标题】:Get column name based on column value dynamically 【发布时间】:2019-04-30 10:05:55 【问题描述】:我有一个表格,其中包含“用户名”、“品牌”和“价值”作为列。每个经理和他们的同事最多负责 3 个品牌,这些品牌可以从经理换到经理。现在用户名、品牌和它们的值是如下的行格式。
User Name Brand Name Value
User 1 Puma 10
User 1 Adidas 20
User 1 Nike 30
User 2 Puma 40
User 2 Adidas 50
User 2 Nike 60
User 3 Puma 70
User 3 Adidas 80
User 3 Nike 90
使用我在下面实现的“案例”,但问题是,这些品牌可以根据经理而改变。例子。经理 -1 可以负责 Puma、耐克、阿迪达斯,但经理 -2 可以负责 X、Y、Z 品牌。
User Name Brand -1 Brand -2 Brand -3
User 1 10 20 30
User 2 40 50 60
User 3 70 80 90
我想要的状态是以列格式获取品牌名称,如下所示。
对于经理 - 1
User Name PUMA ADIDAS NIKE
User 1 10 20 30
User 2 40 50 60
User 3 70 80 90
对于经理 -2
User Name X Y Z
User 1 10 20 30
User 2 40 50 60
User 3 70 80 90
我希望将实际的 3 个品牌名称作为动态列,而不是 Brand-1、Brand-2、Brand -3。我可以硬编码这些品牌名称,但正如我所说,它们可能因经理而异,但每次只有一位经理。
【问题讨论】:
您是如何存储经理信息的? 我正在使用 Postgres SQL。 @ch2019 我的报告将经理 ID 作为参数。所以一次一位经理(一次 3 个品牌)。 【参考方案1】:旋转可以通过多种方式实现,
1) 使用数据透视函数 2)使用XML函数 3) 动态 SQL 4) 使用游标
假设您使用的是 Oracle SQL 数据库,以上所有内容都适用,请对以上内容进行更多调查。如果上述其他选项很少与您的数据库工具相关的其他选项一起适用。
【讨论】:
我正在使用 Postgres SQL以上是关于根据列值动态获取列名的主要内容,如果未能解决你的问题,请参考以下文章
foreach属性-动态-mybatis中使用map类型参数,其中key为列名,value为列值
foreach属性-动态-mybatis中使用map类型参数,其中key为列名,value为列值