需要PostgreSQL中以下场景的帮助。
我需要匹配表1中的A列和B列以及B列和A列,并根据A列和B列计算电线的数量。
表一
| 金属丝 |器械来源(A列)|器械至(B列)|级别|
| - -|- -|- -|- -|
| 导丝1|设备1|设备2|第一级|
| 导丝2|设备1|设备2|第一级|
| 3号线|设备2|设备1|第一级|
输出应类似于
| 导线数量|导丝|设备来自|设备至|级别|
| - -|- -|- -|- -|- -|
| 三个|配缐1、配缐2、配缐3 3|设备1|设备2|第一级|
1条答案
按热度按时间d4so4syb1#
为了简洁地解决您的问题,我将
device_from
和device_to
列转换为数字(整数)你需要一种比较设备1和设备2的方法,使
1,2
与2,1
相同。我能想到的唯一方法是使用数组和排序。但是要进行数组排序,你必须安装intarray扩展(CREATE EXTENSION intarray;
)或使用一些技巧。请参阅this question了解如何对数组排序和/或安装扩展。基本上你要对两列执行GROUP BY,我在文档中找不到类似的东西,所以我把两列放在一个数组中,然后用GROUP BY数组,我必须分两步来完成。
| 计数器|字符串聚集|组合|水准仪|
| - -|- -|- -|- -|
| 三个|导线1、导线2、导线3| {1、2}|第一级|
这看起来很不错,但现在我们必须将
combo
拆分为两列。其给出了
| 计数器|导线|设备自|设备至|水准仪|
| - -|- -|- -|- -|- -|
| 三个|导线1、导线2、导线3|一个|2个|第一级|