【问题标题】:Create multi column view from single column data从单列数据创建多列视图
【发布时间】:2013-08-13 16:29:05
【问题描述】:

我的 SQL 查询得到以下结果:

EventID          P_Num  PN_NameCount1   PN_Name
ABC-I-10942683  1089213     1            Company 1
ABC-I-10942683  1326624     8            Company 2

我仍在学习 SQL 中的此功能,需要一些帮助,Pivot 在这种情况下不起作用。

我尝试了几种不同的方法来尝试执行此操作,但无法创建所需的结果:

EventID          P_Num1     PNC1    PN_Name     PNC_Num2      PNC2  PN_Name
ABC-I-10942683  1089213     1       Company     11326624        8   Company 2

EventID 将根据公司的不同事件而变化,因为EventID 是基于公司发生事件的特定日期。

这只是我正在处理的 500K+ 行数据的一个示例。这将进入一个临时表,以便与所需的其他各种数据连接。

我试过这个没有成功:

  SELECT Key, 
         MAX(Col1) AS Col1, 
         MAX(Col2) AS Col2, 
         MAX(Col3) AS Col3 
    FROM table 
GROUP BY Key

【问题讨论】:

  • 如果同一个 EventID 有 3 个或 4 个或 X 怎么办?
  • 我认为您可以直接在 MySQL 中解决此问题的唯一方法是创建一个以动态方式构建 SQL 字符串的脚本,然后将该 SQL 字符串与准备好的语句一起使用。我认为这可以帮助你:buysql.com/mysql/14-how-to-automate-pivot-tables.html
  • @BLAM...对于 3 或 4,我也需要展示,但我只需要帮助才能到达那里。一旦我能够将 1 和 2 分开,我总是可以添加更多列。
  • @Prix...我尝试了这种结构,但没有任何积极的结果。 select Key, max(Col1) as Col1, max(Col2) as Col2, max(Col3) as Col3 from table group by Key
  • @Barrabka...给出的链接无效。还 PIVOTS 虽然它们很好,但当我写出它们时它们将不起作用。 (不是公认的功能)。

标签: mysql sql tsql


【解决方案1】:
select EventID 
, min(P_Num) as P_Num1, min(PN_NameCount1)  PNC1, min(PN_Name) as PN_Name1
, max(P_Num) as P_Num2, max(PN_NameCount1)  PNC2, max(PN_Name) as PN_Name2 
from table 
group by EventID  

这是对所述问题的回答。你在评论中说你可以扩展它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-22
    • 2016-03-27
    • 2021-12-23
    • 1970-01-01
    • 2020-08-24
    • 2021-11-20
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多