问题标签 [lateral]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
40812 浏览

sql - Postgres 类似于 SQL Server 中的 CROSS APPLY

我需要将为 MS SQL Server 2005 编写的 SQL 查询迁移到 Postgres 9.1。在此查询
中替代的最佳方法是什么?CROSS APPLY

GetCitizenRecModified()函数是表值函数。我不能放置这个函数的代码,因为它真的很大,计算起来很困难,我不能放弃它。

0 投票
1 回答
703 浏览

postgresql - 错误:表单中的函数表达式不能引用相同查询级别的其他关系:如何解决 LATERAL

当然,这个问题纯粹是假设性的,我还没有愚蠢到试图在 DBMS 中计算素数表。但问题仍然存在:有没有一种干净的方法来解决没有 的问题LATERAL

正如你所看到的,我尝试了一个视图(不起作用),围绕这个视图的函数(也不起作用),这个函数中的一个临时表(njet),并调整了函数的属性。

下一步可能是一些触发黑客(但我真的非常讨厌触发器,主要是因为它们对于 DBMS 模式的严格性是不可见的)

0 投票
3 回答
3493 浏览

sql - 在 LEFT OUTER JOIN 中使用存储过程返回 SETOF 记录

我正在尝试在左外连接中调用存储过程传递参数,如下所示:

compute_prices()返回一组记录。
这是 postgres 显示的消息:

错误:对表“i”的 FROM 子句条目的引用无效

...左加入 compute_prices( i.id ,current_date)...

提示:表“i”有一个条目,但不能从这部分查询中引用它。

这种查询在 Firebird 中有效。有没有一种方法可以通过仅使用查询来使其工作?我不想创建另一个循环遍历项目并单独调用compute_prices().

0 投票
2 回答
469 浏览

sql - 返回多列的plpgsql函数被多次调用

我正在运行 PostgreSQL 9.2.1 并有一个返回 3 列的 plpgsql 函数。它被称为这样(简化):

该函数打印出一条警告消息,我惊讶地发现它打印了 3 次。看起来该函数被调用了 3 次 - 大概每列一次。这对性能没有好处!我怎样才能确保它只被调用一次?它已被标记为 STABLE。

如果我称它为

然后警告只打印一次,但我不知道如何将它集成到更大的查询中,并返回连接和其他列。也就是说,当我需要 FROM 列表中的其他表并且函数从这些表中获取输入时,我不知道如何将函数放入 FROM 列表中。

编辑

查询(更接近原始):

my_aggregate_function并且my_function每个返回 3 列(border、lower_limit、upper_limit),但是my_aggregate_function是一个聚合并且my_function是一个常规函数。

0 投票
4 回答
27825 浏览

sql - 查询 JSON 列中的数组元素

最近升级到使用 PostgreSQL 9.3.1 以利用 JSON 功能。在我的表中,我有一个 json 类型的列,其结构如下:

出于问题的目的,这只是虚拟数据。

是否可以根据 id 查询 emails 数组中的特定项目?
差不多:“返回 id=123 的电子邮件)”?

0 投票
1 回答
1577 浏览

xpath - 蜂巢 - 横向视图爆炸 xpath

我有以下输入 XML:

请注意员工 1111 中缺少的名字

我正在执行以下选择:

预期结果:

请注意缺少名字的 NULL 值)

但是我得到以下结果:

第2222章 福尔摩斯

因为缺少员工 1111 的名字,所以我没有让第一个员工回到我的查询中。有没有办法按照预期结果中的指示取回两个员工数据,其中名字设置为 NULL 和/或缺少空格时?请帮忙。谢谢,

0 投票
1 回答
2743 浏览

sql - 使用 group by 查找数组中最常见的元素

我有一个具有以下结构的行表,name TEXT, favorite_colors TEXT[], group_name INTEGER其中每一行都有一个每个人最喜欢的颜色的列表以及该人所属的组。我怎样才能GROUP BY group_name返回每组中最常见颜色的列表?

你能做一个组合int[] && int[]来设置重叠,int[] & int[]得到交叉点,然后再计算和排名吗?

0 投票
1 回答
1020 浏览

join - 侧视图爆炸给出笛卡尔积

我有一个数据集,如:

我正在使用查询:

这给了我一个 id 和 speed 的笛卡尔积。有人可以建议我应该如何摆脱这个。

0 投票
3 回答
1624 浏览

sql - 使用另一个查询的输出动态执行查询

我有一个名为 generate_table 的函数,它需要 2 个输入参数(rundate::datebranch::varchar

现在我正在尝试使用 PLPGSQL 处理第二个函数,它将获取所有分支的列表和每个分支的最新日期,并将其作为参数传递给 generate_table 函数。

我的查询是这样的:

结果是:

我需要的是函数运行这样的东西

我已经阅读了很多关于 PLPGSQL 的内容,但到目前为止我只能说我几乎不了解基础知识。

我读到可以使用串联来将所有值放在一起,然后在函数中使用 EXECUTE,但我无法使其正常工作。

关于如何做到这一点的任何建议?

0 投票
2 回答
241346 浏览

sql - 查询 JSON 类型内的数组元素

我正在尝试测试jsonPostgreSQL 9.3 中的类型。
我有一个json名为data的表中的列reports。JSON 看起来像这样:

我想在表中查询与“objects”数组中的“src”值匹配的所有报告。例如,是否可以在数据库中查询所有匹配的报告'src' = 'foo.png'?我成功编写了一个可以匹配的查询"background"

但由于"objects"有一系列值,我似乎无法写出有效的东西。是否可以在数据库中查询所有匹配的报告'src' = 'foo.png'?我已经查看了这些来源,但仍然无法得到它:

我也尝试过这样的事情,但无济于事:

我不是 SQL 专家,所以我不知道我做错了什么。