select tt.threshold_id
from (select sum(amount) over (partition by tt.threshold_type
order by tt.threshold_type ) amt
from cash_transactions) cash,
thresholds tt
where tt.threshold_amount < cash.amt
所涉及的rdms是oracle错误是
" ORA-00904: "TT"."THRESHOLD_TYPE": invalid identifier"
我想用这个查询做的是:
阈值表:
Threshold_id Threshold_type Threshold_amount
============================================================
threshold_1 p_id 450
threshold_2 p_id,to_acc_main_num 100
现金交易表:
Tran_inst_id p_id amount to_acc_main_num
=================================================
1 E1 100 123
2 E2 200 5765
3 E1 200 687
4 E2 300 890
5 E1 100 462
期望的输出:
让我们进行第一个提取:阈值表中的第一个记录
Threshold_id Threshold_type Threshold_amount
============================================================
threshold_1 p_id 100000
1.现在threshold_type是p_id好的2.所以我需要根据cash_transactions表中的pid进行分组。3.因此从此获得的预期结果是(但我必须仅基于p_id求和)在这种情况下不是tran_inst_id
Tran_inst_id p_id sum(amount)
======================================
1 E1 400
2 E2 500
3 E1 400
4 E2 500
5 E1 400
1.现在,将以上每个记录的数量与threshold_1记录的数量进行比较。2.因此,将threshold_1的450
threshold_amount与所有上述记录3.进行比较,因此所需的输出将是
theshold_id Tran_inst_id
==================================
thresold_1 2
threshold_1 4
- the above result is for first record of threshold table ,now the same continues for the second record.
编辑:假设如果threshold_type为null,那么我们不需要在查询中包括分区,那么如何获取它呢?
只有在动态sql中才有可能,因为group by子句中的列数是可变的。例如带有一个函数:
create or replace
function sum_cash_transactions ( p_threshold_type varchar2) return number
is
v_result NUMBER;
begin
execute immediate ' select max( sum_amount)
from( select sum(amount) as sum_amount
from cash_transactions
group by ' || p_threshold_type || ' )'
into v_result;
return v_result;
end;
/
接着
select threshold_id
from thresholds
where threshold_amount < sum_cash_transactions(threshold_type);
根据新要求进行编辑:
CREATE OR REPLACE package pkg AS
TYPE res_rec_type IS RECORD (
threshold_id VARCHAR2(200)
, Tran_inst_id NUMBER(10,0)
, sum_amount NUMBER(22)
);
TYPE res_tab_type IS TABLE of res_rec_type;
FUNCTION f1 RETURN res_tab_type PIPELINED;
END;
/
CREATE OR REPLACE PACKAGE BODY pkg AS
FUNCTION f1 RETURN res_tab_type PIPELINED
IS
CUR SYS_REFCURSOR;
v_rec res_rec_type;
BEGIN
FOR treshold in ( SELECT Threshold_id, Threshold_type, Threshold_amount FROM thresholds)
LOOP
OPEN CUR FOR 'SELECT ' || threshold.Threshold_id || ', tTran_inst_id, s FROM (SELECT tTran_inst_id, SUM(AMOUNT) OVER (PARTITION BY ' || p_Threshold_type || ') as s from cash_transactions ) WHERE s > ' || treshold.Threshold_amount ;
LOOP
FETCH cur INTO v_rec;
EXIT WHEN cur%NOTFOUND;
pipe row(v_rec);
END LOOP;
END LOOP;
CLOSE cur;
RETURN;
END;
END;
/
SELECT * form table(pkg.f1);
Query 也可以直接执行一个SQL查询,即Select命令。在Postgres中支持原始SQL语句中使用 ` 和 ? 符号。 sql := "select * from userinfo" results, err := engine.Query(sql) 当调用 Query 时,第一个返回值 results 为 []map[string][]byte 的形式。 Query 的参数也允许传
问题内容: 我正在使用hibernate3.6.7进行映射。我将连接部分设置为静态。我需要服务程序永远运行,另一个服务将调用该服务的某些方法来查询数据库。当我让该服务运行时,第一天工作良好,但是第二天我调用它时,它给出了: 似乎连接已关闭。有人可以给我一些建议吗? 非常感谢你:) 问题答案: 听起来好像数据库已关闭连接或某个网络设备已终止套接字。您可以通过多种方法来解决此问题: 您可以经常在连接上
问题内容: 我正在使用Struts2&Hibernate并在使用字符串搜索数据时出现以下错误,但是在使用数字搜索时对我有用。我从豆类和豆类中的字符串类型的已定义的属性中获取此值。 下面我提供代码: 豆类: 对应: 错误: 问题答案: 之所以引发,是因为Hibernate生成的SQL查询的SQL语法错误。构建查询的方式是错误的,不应将值(尤其是字符串值)连接到结果查询,因为此类代码容易受到SQL注入
这是正在执行查询的函数: 运行此函数时,出现以下异常: SQLSTATE[HY093]:无效的参数编号:未定义参数(SQL:选择名称、总体、圆((ST_Distance(rpoint,'POINT(24.8 43.3648))):数字,1)作为距离,圆(度(ST_Axitation(rpoint,'POINT(24.8 43.3648)):数字,1)作为来自ST_DWithin(rpoint,'P
所以myTable有一个列,我需要从中获取最大id并在查询中使用它。 最后一行给了我一个错误: 运行查询时出错:在EntityManager中创建查询时出现异常:< br > Java . lang . illegalargumentexception:在EntityManager中创建查询时出现异常:异常描述:语法错误解析[上面的查询]。[214,214]必须为范围变量声明提供标识变量。
大家好,我在joomla 2.5中为后端做了一个组件,但是我在执行sql查询时遇到了问题,我的变量是空的,所以它不会显示任何内容。 我有其他的文件和文件,但这里对我的问题很重要。 首先在我的controller.php我有这个内部管理文件 在我的模型文件我有restaurante.php 在我的控制器文件里我有这个 最后,在我的视图文件中,我有一个默认的tmpl文件。显示表格的php 但是元素re