【发布时间】:2020-12-09 01:46:00
【问题描述】:
我有一个现有的 Postgresql 选择查询输出给我,
+------+------------+------+------+
| Type | ID | Pass | Fail |
+------+------------+------+------+
| IQC | ABC_IQC_R2 | 0 | 6 |
+------+------------+------+------+
| IQC | ABC_IQC_R1 | 2 | 6 |
+------+------------+------+------+
| IQC | ABC_IQC | 498 | 8 |
+------+------------+------+------+
如何将 ID-> ABC_IQC 行复制为两行,同时将 R1 和 R2 值合并到该行中? (如下图)
+------+---------+------------+------+------+--------+--------+
| Type | ID | R_ID | Pass | Fail | R_Pass | R_Fail |
+------+---------+------------+------+------+--------+--------+
| IQC | ABC_IQC | ABC_IQC_R2 | 498 | 8 | 0 | 6 |
+------+---------+------------+------+------+--------+--------+
| IQC | ABC_IQC | ABC_IQC_R1 | 498 | 8 | 2 | 6 |
+------+---------+------------+------+------+--------+--------+
我能想到的两个逻辑是,
-
遍历 ID 以搜索 ABC(但我不确定如何匹配它们)。复制 ABC_IQC 行,然后使用横向连接合并它们(仍然不确定如何)
-
从 R2 和 R1(现在成为 R_ID)复制 ABC_IQC(ID 列)的列。搜索原始 ABC_IQC 行的 ID,并将通过和失败的值提取到 R2 和 R1 行中。
这是我当前获取初始查询输出的查询,
SELECT
split_part(NewLotID, '_', 2) AS "Type",
LotSummary ->> 'ID' AS "ID",
LotSummary ->> 'Pass' AS "Pass",
LotSummary ->> 'Fail' AS "Fail"
FROM
(
SELECT
LotSummary,
regexp_replace(LotSummary ->> 'ID','[- ]','_','g') AS NewLotID
.
.
.
我并不期待完整的答案,因为我几乎没有提供任何代码,只是提供任何可能有用的想法或见解!提前谢谢你。
【问题讨论】:
标签: sql postgresql