我的表结构看起来像这样,我是这个领域的新手.我知道基本的问题.但这对我来说很复杂.请帮我这样做.
表结构
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) 我使用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) 您好,我在 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) 我发现很难说出我想要实现的目标.我有一个看起来像这样的表:
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构建查询.
我有一个桌子员工,
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列是平均(工资)
我该如何解决这个问题?
较旧版本的日期格式是dd-mon-yy. 在这种情况下yy代表年份。但是如果我们31-aug-14在 oracle 10g 中编写完整的日期格式是31-aug-1914.
较新版本的日期是dd-mon-rr. 那么在那个日期格式中rr代表什么?我知道它代表了 21 世纪,但这是什么rr意思?请问我想知道。我问过我的教员,但他们也不知道。
这在面试中被问到.问题是,哪一个更快,FORALL在5000或在500记录上使用FOR?好吧,我认为就处理速度而言,FORALL确实更快但仍依赖于要处理的行数,就像上面的问题一样.请分享你的想法.
我们在Oracle生产环境中有一个计划任务,它运行一个存储过程来在dev和prod中的相同模式之间复制数据.(这是解决业务问题的一种权宜之计,直到我们的开发人员有时间正确解决它.)
我们通过从prod复制擦除数据来定期刷新我们的开发和测试环境.该副本包括任务和存储过程.如果存储过程在除生产中的那些服务器之外的任何服务器上运行,我们冒着破坏数据的风险,因此我必须记得告诉DBA在开发和测试中禁用该任务.
有没有办法(通过pl/sql?)来阻止存储过程在我们的生产环境之外运行?
作为故障保护,该过程使用未在dev或test中定义的别名,我宁愿避免生成的错误.
我想将表 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 进行比较?
谢谢!
我有以下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循环级别给出语法错误.
任何帮助,将不胜感激.