我有这样一张桌子(报告)
--------------------------------------------------
| user_id | Department | Position | Record_id |
--------------------------------------------------
| 1 | Science | Professor | 1001 |
| 1 | Maths | | 1002 |
| 1 | History | Teacher | 1003 |
| 2 | Science | Professor | 1004 |
| 2 | Chemistry | Assistant | 1005 |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想得到以下结果
---------------------------------------------------------
| user_id | Department+Position |
---------------------------------------------------------
| 1 | Science,Professor;Maths, ; History,Teacher |
| 2 | Science, Professor; Chemistry, Assistant | …Run Code Online (Sandbox Code Playgroud) 我有透视格式的数据.它看起来像这样:
-----------------------------------------
| user_id | org | position | lang |
-----------------------------------------
| 1001 | USE | Boss | EN |
| 1001 | USD | Bossa | FI |
| 1002 | GWR | Dim | SV |
| 1003 | GGA | DCS | FI |
| 1003 | GCA | DDD | SV |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想将数据表示为:
-------------------------------------------------------------------------------------
| user_id | org_fi | position_fi | org_en | position_en | org_sv | position_sv |
-------------------------------------------------------------------------------------
| 1001 | USD …Run Code Online (Sandbox Code Playgroud) 我在测试机器中有一个数据库设置,在生产机器中有第二个.当我跑:
select to_number('100,12') from dual
Run Code Online (Sandbox Code Playgroud)
然后它在测试机器中出错.但是,这种说法在生产机器中运行得很好.
现在,当我检查NLS_NUMERIC_CHARACTERS时,我在两台机器上都看到','(逗号).还有其他地方我应该寻找小数设置吗?
干杯!
假设我们在表中有3条记录:orig_tab
---------------------------------------------
| PK | Name | Address | Postal Code |
---------------------------------------------
| 1 | AA | Street1 | 11111 |
| 2 | BB | Street2 | 22222 |
| 3 | CC | Street3 | 33333 |
---------------------------------------------
Run Code Online (Sandbox Code Playgroud)
现在数据发生了变化:
---------------------------------------------
| PK | Name | Address | Postal Code |
---------------------------------------------
| 1 | AA | Street1 | 11111 |
| 2 | BB | Street2 | 44444 |
| 3 | CC | Dtreet7 | 33333 …Run Code Online (Sandbox Code Playgroud) 像listunagg函数那样在oracle中有这样的东西吗?例如,如果我有这样的数据:
------------------------------------------------------------
| user_id | degree_fi | degree_en | degree_sv |
--------------------------------------------------------------
| 3601464 | 3700 | 1600 | 2200 |
| 1020 | 100 | 0 | 0 |
| 3600520 | 100,3200,400 | 1300, 800, 3000 | 1400, 600, 1500 |
| 3600882 | 0 | 100 | 200 |
--------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想显示这样的数据:
-----------------------------------------------
| user_id | degree_fi | degree_en | degree_sv |
-----------------------------------------------
| 3601464 | 3700 | 1600 | 2200 |
| 1020 | 100 | 0 …Run Code Online (Sandbox Code Playgroud) 我试图使用INSERT/SELECT组合从其他表插入数据.我还需要通过特定计算插入增量.但是,我无法弄清楚它为什么不起作用.
我有这样的表(temp_business_area):
----------
| bname |
----------
| London |
| Sydney |
| Kiev |
----------
Run Code Online (Sandbox Code Playgroud)
我想在枚举表中有这个:
-----------------------------------------------------------------
| identifier | language_id | code | data | company_limit |
----------------------------------------------------------------|
| BUSINESS_UNIT | 0 | 100 | London | 126 |
| BUSINESS_UNIT | 0 | 200 | Sydney | 126 |
| BUSINESS_UNIT | 0 | 300 | Kiev | 126 |
-----------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
-----------------------------------------------------------------
| identifier | language_id | code | data | company_limit |
----------------------------------------------------------------|
| …Run Code Online (Sandbox Code Playgroud) 我在一个表上写了一个触发器,在某个条件下从其他表中删除数据.触发器具有pragma autonomous_transaction,触发器按预期工作.但是,我确实想知道将来是否会出现任何问题,比如说多个用户/来源同时插入数据等等......有什么建议吗?
源表t1:
--------------------------------------------
| user_id | auth_name1 | auth_name2 | data |
--------------------------------------------
| 1 | Name1 | Name2 | d1 |
| 2 | Name3 | Name4 | d2 |
| 3 | Name5 | Name1 | d3 |
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)
目标表t2:
------------------------------------------------
| record_id | identifier | status | data1 |
------------------------------------------------
| 100 | Broken | 11 | Name1 |
| 101 | Reminder | 99 | Name1 |
| 102 | Broken | 99 | Name2 …Run Code Online (Sandbox Code Playgroud) 我想在一列中显示所有值.我该怎么办?
数据如下所示:
-----------------------------------------------
| user_id | degree_fi | degree_en | degree_sv |
-----------------------------------------------
| 3601464 | 3700 | 1600 | 2200 |
| 1020 | 100 | 0 | 0 |
| 3600520 | 100 | 1300 | 1400 |
| 3600882 | 0 | 100 | 200 |
| 3600520 | 3200 | 800 | 600 |
| 3600520 | 400 | 3000 | 1500 |
-----------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想拥有的是:
-------------------------------------------------------------
| user_id | degree_fi | degree_en | degree_sv |
-------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我想在已经在表中的记录之间插入记录.有超过40000条记录,我想把这个新记录放在第19位.我该怎么办?
让我们考虑一个有5条记录的例子:
表数据:
CREATE TABLE enum
(identifier VARCHAR2(64),
code VARCHAR2(512),
data VARCHAR2(4000))
/
INSERT ALL
INTO enum VALUES ('HR_B_A', 'Halli, L6', 'Halli, L6')
INTO enum VALUES ('HR_B_A', 'Halli, L7', 'Halli, L7')
INTO enum VALUES ('HR_B_A', 'Halli, L8', 'Halli, L8')
INTO enum VALUES ('HR_B_A', 'Halli, L9', 'Halli, L9')
INTO enum VALUES ('HR_B_A', 'Halli, P6', 'Halli, P6')
INTO enum VALUES ('HR_B_A', 'Halli, P7', 'Halli, P7')
select * from dual
/
Run Code Online (Sandbox Code Playgroud)
所以当我们查看表格时,我们得到:
SELECT * FROM enum
IDENTIFIER CODE DATA
---------- --------- ---------
HR_B_A …Run Code Online (Sandbox Code Playgroud) 我需要安排从0600到1800的工作.工作应该每两个小时后运行一次.例如0800,1000,1200,1400,1600,1800.
这是我到目前为止设法完成的代码:
DECLARE
l_id binary_integer;
begin
sys.dbms_job.submit(job => l_id, what => 'integration_export;', interval => 'TRUNC(SYSDATE,''hh24'')+0/24/60');
sys.dbms_output.put_line(l_id);
end;
Run Code Online (Sandbox Code Playgroud)
当然,这将在每2小时后运行一次,而不是在1801 - 0759停止.我怎么能添加这个限制?我要做的一件事是创建另一个计划程序,该程序在1801处唤醒并在此时间点更改为此作业.但是,我想知道这是不是一个好主意.
有什么建议?
提前致谢 :-)
我有一个表,我想选择具有最高值的行.例如:
----------------
| user | index |
----------------
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
| 3 | 4 |
| 3 | 7 |
| 4 | 1 |
| 5 | 1 |
----------------
Run Code Online (Sandbox Code Playgroud)
预期结果:
----------------
| user | index |
----------------
| 1 | 1 |
| 2 | 2 |
| 3 | 7 |
| 4 | 1 |
| 5 | 1 |
----------------
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我假设它可以通过一些我不知道的oracle函数来完成?
提前致谢 …
有一些不寻常的事情发生.虽然移民,我有2050年之后一些时间(例如,二○五○年五月二十○日,21.11,2051),但由于某些原因,他们的Oracle更改为1950年,1951年等.如果你问我,它是由客户报告很烦人.这些是退休日期,所以很明显他们不能在20世纪50年代和60年代
原始表中的日期类似于YYYYMMDD格式,即20500130.所以这是我的合并声明
MERGE INTO employment_data emp
USING temp_02 src
ON (TO_NUMBER(src.id) = emp.id)
WHEN MATCHED THEN UPDATE SET
emp.retirement_day = DECODE(TO_NUMBER(src.retirement), 0, NULL, TO_DATE(src.retirement, 'YYYY.MM.DD'));
Run Code Online (Sandbox Code Playgroud)
其他日期还可以(例如20301204),但是2050年之后的任何日期都是疯狂的.知道我怎么能解决这个烦恼?
Thx提前:-)