oracle

How to get running total in Oracle using SUM and OVER

问题 我正在使用 Sum() Over (Partition by ...Order by ..) 函数来计算列的运行总计,但是只要值重复(或重复)就会出现问题。 Sum() over 似乎按值对它们进行分组,并将所有按值分组的总和作为移动总和。 这不是我打算实现的。 关于为什么它作为一组重复值发生的任何想法或输入,以及如何在不按行列进行游标循环的情况下实现正确的运行总数,我们深表感谢。 下面是测试表的详细信息及其数据,还附上了一个带有预期结果的文件(附件中突出显示的列是 Oracle Sum() 计算不正确的内容)。 CREATE TABLE RUNNINGTOTAL_TEST1 ( A1

How to pretty format the printing of SQL Queries in SQLAlchemy?

问题 我正在使用 SQLAlchemy 使用compile和设置dialect和compile_kwargs参数动态生成 PL/SQL(例如,使用str(ins.compile(dialect=oracle.dialect(), compile_kwargs={'literal_binds': True})) ) 这工作正常,除了输出没有以最漂亮的 SQL 语句格式化。 例如,我的一个输出如下所示: INSERT INTO my_table (a, b, c) SELECT my_table2.d, bar.e, bar.f FROM my_table2 JOIN (SELECT my

更多相关内容:请点击查看

Populate data based on columns in another table

问题 这指的是我之前的问题,我现在想做同样的事情,但从我的源表中引入 3 列。 名称、值和 ATY。 根据源表的值,应填充目标表中的正确列。 所以这意味着,与我之前的问题不同,我不想对列进行硬编码,因为表结构可能会发生变化,或者我在结构不同的不同表上使用相同的代码。 我的源表如下所示: CREATE TABLE your_source ( name VARCHAR2(50), value VARCHAR2(50), ATY VARCHAR2(50) ); INSERT INTO your_source SELECT 'a+b+c+d', 'x2+x1+x3+x5','m1' FROM DUAL

更多相关内容:请点击查看

Populate an Associative Array inside a Nested Table

问题 关于我的上一个问题,在嵌套表中包含 RowId 值, 我有以下示例表: create table data_test ( data_id number, data_value varchar2(100), batch_name varchar2(100) ); 我已将此表用作包含 rowid 的参数: create or replace package dat_pkg is type typ_dat_rec is record ( data_rec data_test%rowtype, data_rowid rowid); type typ_dat_tst is table of typ

更多相关内容:请点击查看

Oracle: I need to select n rows from every k rows of a table

问题 回答1 假设您使用某种逻辑对它们进行排序1 - 10000并且只想输出1-100,2001-2100,4001-4100,etc行,那么您可以使用ROWNUM伪列: SELECT * FROM ( SELECT t.*, ROWNUM AS rn -- Secondly, assign a row number to the ordered rows FROM ( SELECT * FROM your_table ORDER BY your_condition -- First, order the data ) t ) WHERE MOD( rn - 1, 2000 ) < 100;

更多相关内容:请点击查看

Is it good to always use join clause in Oracle? [duplicate]

问题 这个问题在这里已经有了答案: ANSI JOIN 与非 ANSI JOIN 查询的执行方式是否不同? (7 个回答) 4年前关闭。 我最近了解到,在 Oracle 中,我们可以做类似的事情 select t1.a, t2.b from table1 t1, table2 t2 where t1.x = t2.x 这相当于 select t1.a, t2.b from table1 t1 join table2 t2 on (t1.x=t2.x) 是否有任何性能差异,或者是否有任何其他论点我们应该使用一种风格而不是另一种风格? 回答1 一般来说,它们是相等的,但是按照 Oracle 的建议

更多相关内容:请点击查看

How to find 48 working hours date excluding saturday,sundays and holidays in oracle

问题 某些模块需要找到第 48 和第 24 个工作时间。 要求: 假设如果我将2nd May作为参数传递给函数,则输出应为27th April 48 hours和 4 月28th APRIL 24 hours (因为 5 月 1 日是假期,4 月 29 日和 30 日属于周六和周日) 问题在于连续两个假期。 例如,要创建一个dummy数据,我们插入 2nd May 作为假期并在3rd May运行代码,该代码应检索48 hours 27th April和24 hours 4 月28th APRIL日。 但是我的功能似乎不适用于连续的假期。 某处计数器增量似乎在错误的位置。 注意事项:周末

更多相关内容:请点击查看

Join multiple rows into one column using a function in Oracle with 3 related tables

问题 我知道关于同一个问题有多个问题,但我找不到可以解决我的问题的问题。 我也知道这篇文章,这正是我用于下面代码的内容。 我只是有一个小问题... 表_a: a_id a_name 1 aaa 2 bbb 3 ccc 表_b: b_id b_name 1 ddd 2 eee 3 fff 表_c a_id b_id 1 2 1 3 2 1 3 1 3 2 3 3 我有上面的表,我需要一个 SELECT 语句来完成这个: a_name list_of_b_name aaa eee,fff bbb ddd ccc ddd,eee,fff 也许我可以使用一些 Oracle 函数来简化该过程,例如 WM

更多相关内容:请点击查看

Passing a list of dates to an oracle db function via java

问题 create or replace FUNCTION getWorkingDays (DATE_ONE DATE, DATE_TWO DATE) RETURN NUMBER IS DAY_COUNT NUMBER := 0; START_DATE DATE; END_DATE DATE; BEGIN -- loop through and update IF(DATE_ONE is not null and DATE_TWO is not null) THEN IF DATE_ONE < DATE_TWO THEN START_DATE := DATE_ONE; END_DATE :=

更多相关内容:请点击查看

How to parse data inside CDATA in oracle

问题 表中有一个类型为CLOB的列,它存储有效负载。 我需要获取与tenantId相关的值(在本例中为 7)。 如何编写查询以获得相同的结果。 不能使用substr或instr ,因为tenantId的顺序从记录更改为记录。 <PayLoad><![CDATA[{"order":{"entityErrors":[],"action":"CONFIRM","tenantId":"7","Id":"2","deliveryReservationDetails":[{"reservationId":"c05e0c77-1c8f-4dce-a388-fe97fd36f96e"

更多相关内容:请点击查看