Sql 如何通过select查询复制和合并行
我有一个现有的Postgresql select查询输出Sql 如何通过select查询复制和合并行,sql,postgresql,Sql,Postgresql,我有一个现有的Postgresql select查询输出 +------+------------+------+------+ | Type | ID | Pass | Fail | +------+------------+------+------+ | IQC | ABC_IQC_R2 | 0 | 6 | +------+------------+------+------+ | IQC | ABC_IQC_R1 | 2 | 6 | +----
+------+------------+------+------+
| 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值合并到该行中?(如下图所示)
我能想到的两种逻辑是,
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
.
.
.
我不希望得到完整的答案,因为我几乎没有提供任何代码,只是提供了任何可能有用的想法或见解!提前谢谢你。我想你想加入
:
with q as (
<your query here>
)
select q.type, q.id, qr.id as r_id, q.pass, q.fail,
qr.pass as r_pass, qr.fail as r_fail
from q join
q qr
on q.id = 'ABC_IQC' and qr.id like 'ABC_IQC_%';
,其中q为(
)
选择q.type、q.id、qr.id作为r\U id、q.pass、q.fail、,
合格为合格,不合格为不合格
从q连接
qqr
on q.id='ABC_IQC'和类似'ABC_IQC%'的qr.id;
实际上,您可以概括如下:
with q as (
<your query here>
)
select q.type, q.id, qr.id as r_id, q.pass, q.fail,
qr.pass as r_pass, qr.fail as r_fail
from q join
q qr
on q.id ~ '^[^_]+_[^_]+$' and
qr.id like q.id || '_%';
,其中q为(
)
选择q.type、q.id、qr.id作为r\U id、q.pass、q.fail、,
合格为合格,不合格为不合格
从q连接
qqr
关于q.id~'^[^33;]+[^33;]+$和
qr.id喜欢q.id | |‘%’;
非常感谢戈登!你过去帮过我,现在帮过我。非常感谢!
with q as (
<your query here>
)
select q.type, q.id, qr.id as r_id, q.pass, q.fail,
qr.pass as r_pass, qr.fail as r_fail
from q join
q qr
on q.id ~ '^[^_]+_[^_]+$' and
qr.id like q.id || '_%';