【问题标题】: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 个品牌)。

标签: sql postgresql pivot case


【解决方案1】:

旋转可以通过多种方式实现,

1) 使用数据透视函数 2)使用XML函数 3) 动态 SQL 4) 使用游标

假设您使用的是 Oracle SQL 数据库,以上所有内容都适用,请对以上内容进行更多调查。如果上述其他选项很少与您的数据库工具相关的其他选项一起适用。

【讨论】:

  • 我正在使用 Postgres SQL
猜你喜欢
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
相关资源
最近更新 更多