小编APC*_*APC的帖子

Oracle字符串聚合

我的表结构看起来像这样,我是这个领域的新手.我知道基本的问题.但这对我来说很复杂.请帮我这样做.

表结构

  Customer          Product         piriority
    10001           Main_product    1
    10001           Sub_product1    2
    10001           Sub_product2    2
    10001           Sub_product3    2
    10001           Sub_product4    2
    10002           Main_product    1
    10002           Sub_product1    2
    10002           Sub_product2    2
Run Code Online (Sandbox Code Playgroud)

预期产出:

Customer        Main_Product    Sub_product
10001           Main_product    Sub_product1,Sub_product2,Sub_product3,Sub_product4
10002           Main_product    Sub_product1,Sub_product2
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g string-aggregation

1
推荐指数
1
解决办法
1709
查看次数

如何使我的全选复选框忽略禁用的项目?

我使用Javascript来允许用户检查表单中的所有项目.但是,即使它们被禁用,它也会检查项目.有没有办法让这只适用于启用的复选框?

    <script>
    $(document).ready(function () {
        $('#selectall').on('click', function () {
            $('.lv').prop('checked', isChecked('selectall'));
        });
    });
    function isChecked(checkboxId) {
        var id = '#' + checkboxId;
        return $(id).is(":checked");
    }
    function resetSelectAll() {
        // if all check box are selected, check the selectall checkbox
        // and vice versa
        if ($(".lv").length == $(".lv:checked").length) {
            $("#selectall").attr("checked", "checked");
        } else {
            $("#selectall").removeAttr("checked");
        }

        if ($(".lv:checked").length > 0) {
            $('#edit').attr("disabled", false);
        } else {
            $('#edit').attr("disabled", true);
        }
    }
    </script>
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
314
查看次数

Oracle 中的字符串聚合:多行合并为单列

您好,我在 oracle 中有以下字符串聚合函数

CREATE OR REPLACE FUNCTION STRING_AGGREGATE(i_query VARCHAR2,
i_seperator VARCHAR2 DEFAULT ',')
RETURN VARCHAR2
AS
  l_return CLOB:='';
  l_temp VARCHAR(32000);
  TYPE r_cursor is REF CURSOR;
  rc r_cursor;
BEGIN
  OPEN rc FOR i_query;
  LOOP
    FETCH rc
    INTO L_TEMP;
    EXIT WHEN RC%NOTFOUND;
    l_return:=l_return||L_TEMP||i_seperator;
  END LOOP;
  RETURN RTRIM(l_return,i_seperator);
END;
Run Code Online (Sandbox Code Playgroud)

当我调用这个函数时它显示如下

SELECT STRING_AGGREGATE('select ename from emp') ENAMES FROM DUAL;

ENAMES
---------------------------
SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,SCOTT,KING,TURNER,ADAMS,JAMES,FORD,MILLER
Run Code Online (Sandbox Code Playgroud)

这个函数在这里工作得很好,但是当我用带有空格的多列调用这个函数时,它会给我错误,这是我的查询

SELECT STRING_AGGREGATE('select ename||' Job is '||Job from emp') ENAMES FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

我想得到结果

smith job is clerk,allen job is accountatnt,ward job is …
Run Code Online (Sandbox Code Playgroud)

oracle string-concatenation oracle10g oracle11g

1
推荐指数
1
解决办法
1万
查看次数

SQL根据主题计算出现次数

我发现很难说出我想要实现的目标.我有一个看起来像这样的表:

user char
---------
a | x
a | y
a | z
b | x
b | x
b | y
c | y
c | y
c | z
Run Code Online (Sandbox Code Playgroud)

如何编写一个可以返回以下结果的查询?

user x y z
-------
a |1|1|1|
b |2|1|0|
c |0|2|1|
Run Code Online (Sandbox Code Playgroud)

数字表示原始表中字符的出现次数

编辑:字符值未知,因此解决方案不能限制在这些值.很抱歉没有提及它.我正在使用Oracle DB,但计划使用JPQL构建查询.

sql oracle pivot jpql

1
推荐指数
1
解决办法
232
查看次数

如何在Oracle SQL Developer中计算标准偏差?

我有一个桌子员工,

CREATE TABLE employees (
employeeid NUMERIC(9) NOT NULL,
firstname VARCHAR(10),
lastname VARCHAR(20),
deptcode CHAR(5),
salary NUMERIC(9, 2),
  PRIMARY KEY(employeeid)
);
Run Code Online (Sandbox Code Playgroud)

我想计算工资的标准差.

这是我正在使用的代码:

select avg(salary) as mean, sqrt(sum((salary-avg(salary))*(salary-avg(salary)))/count(employeeid)) as SD 
from employees
group by employeeid;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 260 Column: 12
Run Code Online (Sandbox Code Playgroud)

第260行第12列是平均(工资)

我该如何解决这个问题?

sql oracle math group-by aggregate-functions

1
推荐指数
2
解决办法
2万
查看次数

RR在日期格式oracle 10g中代表什么?

较旧版本的日期格式是dd-mon-yy. 在这种情况下yy代表年份。但是如果我们31-aug-14在 oracle 10g 中编写完整的日期格式是31-aug-1914.

较新版本的日期是dd-mon-rr. 那么在那个日期格式中rr代表什么?我知道它代表了 21 世纪,但这是什么rr意思?请问我想知道。我问过我的教员,但他们也不知道。

sql oracle date

1
推荐指数
2
解决办法
3130
查看次数

FORALL与FOR批量更新

这在面试中被问到.问题是,哪一个更快,FORALL在5000或在500记录上使用FOR?好吧,我认为就处理速度而言,FORALL确实更快但仍依赖于要处理的行数,就像上面的问题一样.请分享你的想法.

sql oracle performance plsql

1
推荐指数
1
解决办法
5477
查看次数

Oracle:防止存储过程在生产环境之外运行

我们在Oracle生产环境中有一个计划任务,它运行一个存储过程来在dev和prod中的相同模式之间复制数据.(这是解决业务问题的一种权宜之计,直到我们的开发人员有时间正确解决它.)

我们通过从prod复制擦除数据来定期刷新我们的开发和测试环境.该副本包括任务和存储过程.如果存储过程在除生产中的那些服务器之外的任何服务器上运行,我们冒着破坏数据的风险,因此我必须记得告诉DBA在开发和测试中禁用该任务.

有没有办法(通过pl/sql?)来阻止存储过程在我们的生产环境之外运行?

作为故障保护,该过程使用未在dev或test中定义的别名,我宁愿避免生成的错误.

oracle plsql stored-procedures

1
推荐指数
1
解决办法
184
查看次数

如何在 SELECT INTO 语句中使用数字表

我想将表 OS_CW.CW_FELDDATEN 属性的 PRIMITIVUMNUMMER (NOT NULL NUMBER(38)) 与本地数组 中的值进行比较v_list_pNummber。这是我到目前为止所拥有的:

DECLARE
    TYPE array_of_numbers IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
    v_list_parentID     array_of_numbers;
    v_list_pNummer      array_of_numbers;
BEGIN
    SELECT DBUID BULK COLLECT INTO v_list_parentID 
    FROM OS_SYS.V_CATALOG 
    WHERE PARENTID = 1;

    SELECT PRIMITIVUMNUMMER BULK COLLECT INTO v_list_pNummer 
    FROM OS_CW.CW_FELDDATEN 
    WHERE KATALOG IN (v_list_parentID);
END;
Run Code Online (Sandbox Code Playgroud)

运行上面的代码时,我收到此错误:

错误报告 -
ORA-06550: 第 28 行,第 104 列:
PLS-00382: 表达式类型错误
06550.00000 - “行 %s,列 %s:\n%s”
*原因:通常是 PL/SQL 编译错误。
*行动:

如何将列(数字)与表 NUMBER INDEX BY BINARY_INTEGER 进行比较?

谢谢!

sql oracle plsql user-defined-types

1
推荐指数
1
解决办法
4958
查看次数

oracle函数语法错误

我有以下oracle函数,其中num_list作为逗号分隔列表的输入,然后检查此列表中的数字是否存在于某个表中:

create or replace FUNCTION get_num_exist (num_list varchar2,separator varchar2) 
    RETURN nbs PIPELINED 
as
    row_type nb;
begin

    with numbers as 
    (select regexp_substr(num_list,'[^'||separator||']+', 1, level)num_  
     from dual
     connect by regexp_substr(num_list, '[^'||separator||']+', 1, level) is not null)


    for r_row in (select * from numbers
                  where num_  in (select phone_number 
                                   from phone_numbers) )
    loop
        PIPE ROW(nb(r_row.num_));
    end loop;
    return;

end;
Run Code Online (Sandbox Code Playgroud)

但它在for循环级别给出语法错误.

任何帮助,将不胜感激.

oracle plsql function

1
推荐指数
1
解决办法
158
查看次数