1
我有以下子查询:PostgreSQL的聚合函数选择2个对应的字段
LEFT OUTER JOIN
(
SELECT
MAX(testresult."testdate") AS beforeresult,
testschedule."test_id",
testschedule."asset_id",
testschedule."testdate" AS testdate,
testschedule."testresult_id" as scheduleresult_id
FROM
"public"."testresult" testresult
INNER JOIN "public"."testschedule" testschedule
ON testschedule."asset_id" = testresult."asset_id"
AND testschedule."test_id" = testresult."test_id"
WHERE
"testresult"."client_id" = 25368272
AND testresult."testdate" < testschedule."mintolerancedate"
AND testschedule."testdate" > '2016-10-01'
AND testschedule."testdate" < '2016-10-20'
GROUP BY
testschedule."asset_id",
testschedule."test_id",
testschedule."testdate",
testschedule."testresult_id"
ORDER BY MAX(testresult."testdate")
) lasttr
ON "testschedule"."asset_id" = lasttr."asset_id"
AND "testschedule"."test_id" = lasttr."test_id"
AND testschedule."testdate" = lasttr.testdate
这给了我正确的testdate。但是,我还需要与日期对应的testchedule。“testresult_id”。有没有办法从上面的查询中选择这个?
在此先感谢
感谢您的快速响应,但我仍然没有收到testschedule。“testresult_id”字段。基本上它需要以某种方式加入到testdate的MAX聚合函数中,但我似乎无法做到这一点 - 我的猜测是我忽略了一些简单的东西。 – user3075171
您不需要再次加入。侧向连接应该做你想要的。 –
所以我在每行之前加上“and”:“testschedule”。“”asset_id“= ts。”asset_id“ ”testschedule“。”test_id“= ts。”test_id“然后当我运行这个时,当添加group by子句时,我得到“输入结束时的语法错误”。如果我添加“ON”子句,那么它会运行,但不会给出每个组的结果。 – user3075171