sql - 我从一个函数返回一个表,然后在另一个查询中使用它
问题描述
问题陈述:我有一个产品表,我想根据某些条件查看哪些产品与输入产品匹配,所以我制作了这样的函数:
-- mapper function
CREATE OR REPLACE FUNCTION selfMapperProducts(input parameters)
RETURNS TABLE(output parameters)
LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE ROWS 1000
AS $BODY$
BEGIN
RETURN QUERY SELECT
DISTINCT ON (channel) channel,sku,title,brand,mrp,price,subtitle, grammage, si, units
FROM
products
WHERE some_condition ORDER BY channel, ABS(price - base_price) ASC;
END;
$BODY$;
当我运行此查询时,这给了我:
select * from selfMapperProducts(input);
但是当我像这样使用它时:
select * from (select sku, title, selfMapperProducts(input) products where conditon) as temp;
- 我的第一个问题是如何在这里实现相同的列输出?
- 我的第二个问题是如何按 sku 和标题对结果进行分组?
解决方案
推荐阅读
- git - 从源树 UI 中删除分支
- doxygen - 如何使用 Doxygen tableofcontents 命令
- java - 为具有泛型类型的 Java POJO 生成 Avro Schema
- azure-powershell - Azure 自动化 Power Shell - 如何从 URL 下载 Zip 文件夹并发布到 Azure blob
- string - 来自字符串“\”的Golang trimPrefix
- nuget - 自动化 .net 框架包安装:解决包对其他包的依赖
- c# - 如何在 Outlook 加载项中的 Outlook.AppointmentItem 正文中显示 HTML 内容
- postgresql - 将html插入数据库时如何解决引号问题?
- ios - Xcode 11 测试计划似乎没有本地化模拟器状态栏
- javascript - 在原型上实现地图时增加对回调方法的理解