如果可能,当我想在选择目标列表中使用记录返回功能的结果时,如何使用列定义列表?

时间:2012-12-22 10:57:55

标签: sql postgresql postgresql-9.1

我有一个带有一些ID的简单表格,我正在进行此查询:

select funA(t.id), funB(t.id) from customers t

使用记录正确返回2列。函数funA和funB RETURN记录。(不是定义的记录类型)

现在,我希望得到两个函数的所有记录列,而不是2个记录列:

我知道在调用FROM子句中的函数时我可以使用列定义列表,但是这里我调用了选择列表中的函数。当我想在SELECT列表中使用函数调用时,是否有可能以某种方式提供列定义列表?

1 个答案:

答案 0 :(得分:1)

尝试:

SELECT (sub.funA_result).field1,
       (sub.funA_result).field2,
       (sub.funB_result).field3,
       (sub.funB_result).field4
FROM (SELECT funA(t.id) as funA_result,
             funB(t.id) as funB_result
      FROM customers t) sub

您也可以在我对这个类似问题的回答中找到一些细节:Creating a function in Postgresql that does not return composite values