PostgreSQL 10中的表是通过以下方式创建的:
CREATE TABLE public."Table"(
"ID" serial,
"Epoch" smallint,
"Unit" smallint,
"Value" double precision
);
,它存储两个测量单位的读数。
通常,两个单元都应并行测量并产生指示,因此应同时插入两行(在此称为“时代”)。
但是有时也无法为单个纪元提供所有预期的两个读数,如下面的示例所示(纪元= 30和纪元= 40):
Epoch | Unit | Value
-------+------+-------
10 | 1 | 1.1
10 | 2 | 1.2
20 | 1 | 2.1
20 | 2 | 2.2
30 | 1 | 3.1
40 | 2 | 4.2
50 | 1 | 5.1
50 | 2 | 5.2
(8 rows)
我在执行以下查询时遇到问题:
在同一行中返回两个纪元的每个纪元的结果,如下所示:
Epoch ; Value_Unit1 ; Value_Unit2
两个单元均无指示的行应从结果中排除。
我正在寻找一种解决方案(针对所提供的示例),其结果如下:
10 ; 1.1 ; 1.2
20 ; 2.1 ; 2.2
50 ; 5.1 ; 5.2
这里的许多示例都处理非常相似的问题,但是它们不允许我为我的特定问题找到正确的答案,或者...我听不懂那里的建议。
谢谢。
答案 0 :(得分:0)
将表与自身结合在一起,为这两种情况提供不同的别名:
SELECT
T1."Epoch",
T1."Value" AS Value_Unit1,
T2."Value" AS Value_Unit2
FROM
public."Table" AS T1
JOIN public."Table" AS T2
USING("Epoch")
WHERE
T1."Unit" = 1 AND
T2."Unit" = 2;