PostgreSQL-将多行作为一行返回
我有一个返回两行的查询:PostgreSQL-将多行作为一行返回,sql,postgresql,Sql,Postgresql,我有一个返回两行的查询: SELECT * FROM ( SELECT cola,colb from table LIMIT 2 ) as f 结果是: cola, colb x, 1 y, 2 是否可以在顶层选择中使用结果?类似于: SELECT some_function(x,y), some_other_function(1,2) FROM ( SELECT cola,colb from table LIMIT 2 ) as f 以下是实际查询: SELECT * FRO
SELECT *
FROM (
SELECT cola,colb from table LIMIT 2
) as f
结果是:
cola, colb
x, 1
y, 2
是否可以在顶层选择中使用结果?类似于:
SELECT some_function(x,y), some_other_function(1,2)
FROM (
SELECT cola,colb from table LIMIT 2
) as f
以下是实际查询:
SELECT *
FROM
(
SELECT
alt,
st_distance_sphere(
st_closestpoint(geom,st_setsrid(st_makepoint(x,y),4326)),
st_setsrid(st_makepoint(x,y),4326)
) as d
FROM table
) as foo
它返回:
alt | d
800 | 9.658
900 | 11.59
etc
您需要某种交叉制表来将多行聚合为一行 您的示例的工作原理如下:
SELECT some_function(arr_a[1], arr_a[2])
, some_other_function(arr_b[1], arr_b[2])
FROM (
SELECT array_agg(cola) AS arr_a
, array_agg(colb) AS arr_b
FROM (
SELECT cola, colb
FROM tbl
ORDER BY cola
LIMIT 2
) sub1
) sub2;
有多种方法。取决于实际问题。不能将子查询中检索到的值用作父查询中的字段名。SQL不是那样工作的。您可以检索这些值并从中生成新的查询,但没有自动执行您所需的操作的方法。我假设它类似于cola[0]等。我还没有在网上看到有关此的任何信息(可能我搜索的术语错误?),所以发到这里寻求帮助?嗯…x和y,1和2所属的ID是相同的吗?如果是这样的话,那么这可能需要一个枢轴解决方案。@JaazCole-他们没有(我想你是在问他们是否有钥匙?)。初始查询实际上是一个PostGIS空间计算,它使用传递给查询的数据,而不是表。