【问题标题】:PostgreSQL : How do I take multiple rows with values in different columns and combine into one row with all the values on one line?PostgreSQL:如何将多行的值放在不同的列中,并将所有值合并到一行中?
【发布时间】:2018-11-30 02:32:08
【问题描述】:

这是我目前拥有的桌子。 我想将所有内容合并为一个 event_code 并将所有内容放在一行中。我检查了堆栈和谷歌并得到了不同的答案,这似乎无法解决我的问题。

我想要的是

**event_code : fs_rev : hs_rev :  pp_rev :   mp_rev : gp_rev :  in_rev : broker**

LAK180918  :  619500  :   0    :  7000   :    0     :   5000  :   8500  :   17500

通过将所有列合并到一行下,我似乎无法找到有关如何执行此操作的答案。谁能建议我应该怎么做?

【问题讨论】:

  • 这是 postgres 还是 redshift?它们根本不一样。请相应地编辑问题/标签。
  • 请描述规则/逻辑,例如为什么 pp_rev =5000 你想要第一个非空值吗?
  • 我正在使用 postgresql,并被告知它已连接到 aws-redshift。此外,如果您查看数据,pp_rev 的 event_code 是不同的,因此 918 应该有 7000,而 920 应该有 58000。我希望将所有行压缩成一个
  • 要 100% 清楚您是使用 redshift 还是使用 postgres,它们是不同的。不管你被告知这是什么情况!我明白你对事件代码不同的意思。因此,如果事件代码中有 2 个或更多,您的要求是获得最高值?
  • 据我所知,这是一个连接到亚马逊 redshift 的 Navicat 软件,它在我这边使用 postgresql。要求是获得一行,其中每列显示一个值。正如您所看到的,每一行都有一个带有值的列,而其余部分为空,我需要将这些全部压缩成一行

标签: sql database postgresql amazon-redshift navicat


【解决方案1】:

您可以使用 Max 或 Min 函数。我假设事件中的每一列只有一个有效值。

select event_code, max(fs_rev),max(hs_rev),max(pp_rev),max(mp_rev)
,max(gp_rev),max(in_rev),max(broker)
from table
group by event_code

【讨论】:

  • 谢谢。我现在觉得自己像个白痴,没有看到这么简单的解决方案。这解决了它
猜你喜欢
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 2016-06-02
  • 2019-05-24
  • 2021-04-26
相关资源
最近更新 更多