Separate lines of two tables related by a third
HelloI need to write a sentence SQL of a group of SEPARATE lines, each line in a shape of: A.X, A.Y, C.IDBOLETA. Tables A and C are related through the table C, as follows:
Table A: INDUSTRIAGEO
VARCHAR2 (20) NIT NOT NULL,.
CORRELAIGEO NUMERIC (2) NOT NULL,
NOMBREAGENCIA VARCHAR2 (255) NOT NULL,
DIRECCION VARCHAR2 (255),
X NUMERIC (12.8) NOT NULL,
IS NUMERIC (12.8) NOT NULL,
CONSTRAINT PKGEOINDUST PRIMARY KEY (NIT, CORRELAIGEO),
CONSTRAINT FKGEOINDUST FOREIGN KEY (NIT) REFERENCES INDUSTRIA (NIT)
Table B: ANÁLISIS
IDANALISIS NUMERIC (12) NOT NULL,
VARCHAR2 (20) NIT NOT NULL,.
CORRELAIGEO NUMERIC (2) NOT NULL,
DATE DATE NOT NULL,
IDINSPECTOR NUMERIC (4) NOT NULL,
CONSTRAINT PKANALISIS PRIMARY KEY (IDANALISIS).
CONSTRAINT FKANALGEOI FOREIGN KEY (NIT, CORRELAIGEO) REFERS TO INDUSTRIAGEO (NIT, CORRELAIGEO).
CONSTRAINT FKANALINSP FOREIGN KEY (IDINSPECTOR) REFERENCES INSPECTOR (IDINSPECTOR)
Table c: ANALISISBOLETA
IDANALISIS NUMERIC (12) NOT NULL,
CORRELAANALISIS NUMERIC (2) NOT NULL,
IDBOLETA NUMERIC (12) NOT NULL,
IDCATEGORIAINDUSTRIA NUMERIC (3) NOT NULL,
CONSTRAINT PKANALBOLE PRIMARY KEY (IDANALISIS, CORRELAANALISIS),
CONSTRAINT UKANALBOLE UNIQUE (IDBOLETA).
CONSTRAINT FKANALBOLE FOREIGN KEY (IDANALISIS) REFERENCES COPS. ANÁLISIS (IDANALISIS),
CONSTRAINT FKANALCATI FOREIGN KEY (IDCATEGORIAINDUSTRIA) REFERENCES COPS. CATEGORIAINDUSTRIA (IDCATEGORIAINDUSTRIA)
Thanks for your help!
Mario
Maybe
select distinct a.x,a.y,c.idboleta
from industriaego a,
cops.analisis b,
analisisboleta c
where a.nit = b.nit
and a.correlaigeo = b.correlaigeo
and b.idanalisis = c.idanalisis
Concerning
Etbin
Edited by: Etbin on 4.5.2010 21:42
the Elf of copy/paste started: b.correlaigeo instead of b.a.correlaigeo (as in the comment of the OP below)
Tags: Database
Similar Questions
-
XML from the interlaced lines of two Tables?
I'm trying to generate XML data from interlaced lines of two relational tables that have a common FK, and I can't have enough to get the concept / syntax right. for example:
-----CREATE TABLE A ( PK_A NUMBER , FK NUMBER , C VARCHAR2(100) , D VARCHAR2(100) ) ; CREATE TABLE B ( PK_B NUMBER , FK NUMBER , E VARCHAR2(100) , F VARCHAR2(100) ) ; ... load some data into both tables so B always has one more row than A for the any FK ... FUNCTION Get_XML( FK_In IN a.fk%TYPE ) RETURN XMLType IS TYPE A_Table_Type IS TABLE OF a%ROWTYPE ; TYPE B_Table_Type IS TABLE OF b%ROWTYPE ; TYPE XML_Table_Type IS TABLE OF XMLType INDEX BY PLS_INTEGER ; my_A_Table A_Table_Type ; my_B_Table B_Table_Type ; my_XML_Table XML_Table_Type ; my_Return_XML XMLType ; t NUMBER := 0 ; -- my_A_Table index x PLS_INTEGER := 1 ; -- my_XML_Table index BEGIN SELECT * BULK COLLECT INTO my_A_Table FROM a WHERE ( fk = FK_In ) ; SELECT * BULK COLLECT INTO my_B_Table FROM b WHERE ( fk = FK_In ) ; FOR i IN 1..my_B_Table.COUNT LOOP SELECT XMLElement( "B" , XMLAttributes( my_B_Table(i).E AS "ID" ) ) INTO my_XML_Table( x ) FROM dual ; x := x + 1 ; IF ( t < my_B_Table.COUNT ) THEN t := t + 1 ; SELECT XMLElement( "A" , XMLAttributes( my_A_Table(t).C AS "ID" ) ) INTO my_XML_Table( x ) FROM dual ; x := x + 1 ; END IF ; END LOOP ; SELECT XMLAgg( SELECT * FROM TABLE( my_XML_Table ) INTO my_Return_XML FROM dual ; RETURN my_Return_XML ; END Get_XML ;
The statement "SELECT XMLAgg (... "does not, compile with one" ORA-00936: lack the expression "error." Using an associative array of XMLType is my last attempt to build up interlaced table A / B XML fragments in a single global XML fragment. At first, I just tried to XMLConcat each query results directly in my_Return_XML.
--
AlexHello
I see two problems here:
(1) lack of parentheses around SELECT it and closing XMLAgg:
SELECT XMLAgg( ( SELECT * FROM TABLE( my_XML_Table ) ) ) INTO my_Return_XML FROM dual ;
(2) you cannot use the TABLE function with a type declared for PL/SQL. You must create a SQL type and declare a collection of this type.
Alternatively, you can use SYS. XMLSEQUENCETYPE (varray of XMLType).Anyway, is there a simpler approach?
For example, using a single SELECT statement:SQL*Plus: Release 10.1.0.4.2 - Production on Mar. Mars 30 11:32:08 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connecté à : Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> CREATE TABLE A ( 2 PK_A NUMBER , 3 FK NUMBER , 4 C VARCHAR2(100) , 5 D VARCHAR2(100) 6 ) ; Table créée. SQL> CREATE TABLE B ( 2 PK_B NUMBER , 3 FK NUMBER , 4 E VARCHAR2(100) , 5 F VARCHAR2(100) 6 ) ; Table créée. SQL> INSERT INTO a 2 SELECT level, '1', 'A:VALUE '||to_char(level,'fm09'), 'A:VALUE '||to_char(level,'fm09') 3 FROM dual 4 CONNECT BY level <= 10; 10 ligne(s) créée(s). SQL> INSERT INTO b 2 SELECT level, '1', 'B:VALUE '||to_char(level,'fm09'), 'B:VALUE '||to_char(level,'fm09') 3 FROM dual 4 CONNECT BY level <= 11; 11 ligne(s) créée(s). SQL> commit; Validation effectuée. SQL> set long 500 SQL> set pagesize 50 SQL> variable fk number; SQL> exec :fk := 1; Procédure PL/SQL terminée avec succès. SQL> SELECT xmlagg( 2 xmlelement(evalname(ename), xmlattributes(id)) order by rn 3 ).extract('/*') --< for formatting purpose 4 as xmldoc 5 FROM ( 6 SELECT 2*rownum-1 as rn, 7 'B' as ename, 8 e as id 9 FROM b 10 WHERE fk = :fk 11 UNION ALL 12 SELECT 2*rownum, 13 'A', 14 c 15 FROM a 16 WHERE fk = :fk 17 ); XMLDOC --------------------------------------------------------------------------------
Interlacing is made in the inner query by assigning same ROWNUMs odd and table A to table B.
-
Combine multiple lines into one line (from two tables / result sets)
Hello experts,
I would like to know how to combine multiple lines/records in a single record. Here are the DDL and DML to tables:
create table test_table)
client_name varchar2 (50 char),
login_time timestamp (6).
logout_time timestamp (6).
auto_type varchar2 (10 char)
)
create table root_table)
navigation_time timestamp (6).
client_name varchar2 (50 char),
VARCHAR2 (50 char) nom_du_groupe
)
Insert into test_table
values ("John", TO_TIMESTAMP ('2013-12-05 17:04:01.512 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), TO_TIMESTAMP ('2013-12-05 17:27:31.308 ',' YYYY-MM-DD HH24:MI:SS.) FF'), 'SIMPLE');
Insert into test_table
values ('David', TO_TIMESTAMP ('2013-12-05 06:33:01.308 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), TO_TIMESTAMP ('2013-12-05 06:45:01.112 ',' YYYY-MM-DD HH24:MI:SS.) FF'), 'SIMPLE');
insert into root_table
values (TO_TIMESTAMP ('2013-12-05 17:04:01.512 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), 'John', "invalid");
insert into root_table
values (TO_TIMESTAMP ('2013-12-05 17:14:22.333 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), 'John', "GROUP_1");
insert into root_table
values (TO_TIMESTAMP ('2013-12-05 17:27:31.308 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), 'John', "GROUP_1");
insert into root_table
values (TO_TIMESTAMP ('2013-12-05 06:33:01.308 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), "David", "invalid");
insert into root_table
values (TO_TIMESTAMP ('2013-12-05 06:45:01.112 ',' YYYY-MM-DD HH24:MI:SS.)) FF'), 'David', 'GROUP_5');
game results test_table
client_name login_time logout_time auto_type John 05/12/2013 5:04:01.512000 PM 05/12/2013 5:27:31.308000 PM SIMPLE David 05/12/2013 6:33:01.308000 AM 05/12/2013 6:45:01.112000 AM SIMPLE root_table result set
navigation_time client_name GroupName 05/12/2013 5:04:01.512000 PM John Not valid 05/12/2013 5:14:22.333000 PM John GROUP_1 05/12/2013 5:27:31.308000 PM John GROUP_1 05/12/2013 6:33:01.308000 AM David Not valid 05/12/2013 6:45:01.112000 AM David GROUP_5 And here is the SQL code I'm writing:
Select a.customer_name, a.login_time, a.logout_time, a.auto_type, Max (b.group_name)
from test_table a, b root_table
where a.customer_name = b.customer_name
Group of a.customer_name, a.login_time, a.logout_time, a.auto_type
As the 'invalid' value is greater than the value "GROUP_1" (based on the number of letter in English), the GroupName is returned as 'invalid '. I want to bring the GroupName based on the navigation_time column in the root_table so that it always returns a valid GroupName. Please help me.
Output current:
Client_name. Login_Time. Logout_Time | Auto_Type | GroupName
--------------------------------------------------------------------------------------------------------------------------------------------
John | 05/12/2013 5:04:01.512000 PM | 05/12/2013 5:27:31.308000 PM | SIMPLE | Not valid
David | 05/12/2013 6:33:01.308000 AM | 05/12/2013 6:45:01.112000 AM | SIMPLE | Not valid
Expected results:
Client_name. Login_Time. Logout_Time | Auto_Type | GroupName
--------------------------------------------------------------------------------------------------------------------------------------------
John | 05/12/2013 5:04:01.512000 PM | 05/12/2013 5:27:31.308000 PM | SIMPLE | GROUP_1
David | 05/12/2013 6:33:01.308000 AM | 05/12/2013 6:45:01.112000 AM | SIMPLE | GROUP_5
Thank you!
Adding INSERT statements, current and planned outputs.
This...
SELECT client_name
login_time,
logout_time,
auto_type,
GroupName
Of
(select a.customer_name,
a.login_time,
a.logout_time,
a.auto_type,
b.group_name,
ROW_NUMBER() over (PARTITION BY a.customer_name, a.login_time, a.logout_time, a.auto_type ORDER BY b.group_name) rn
from test_table a, b root_table
where a.customer_name = b.customer_name)
WHERE rn = 1;
OUTPUT:-
=========
David DECEMBER 5, 13 06.33.01.308000000 AM DECEMBER 5, 13 06.45.01.112000000 AM SIMPLE GROUP_5 John DECEMBER 5, 13 05.04.01.512000000 PM DECEMBER 5, 13 05.27.31.308000000 PM SIMPLE GROUP_1 Thank you
Ann
-
missing parenthesis in insertion into separate lines select the table from the other table
Hello
could you help me with the following question?
I have the following tables
CREATE TABLE table1)
ID varchar (12),
col2 varchar (10),
COL3 varchar (10),
level varchar (10))
CREATE TABLE table2)
Id2 varchar (12)
A varchar (10),
B number (1)
CONSTRAINT PRIMARY KEY PK (ID2, is));
INSERT INTO table2 (ID2, A, B) SELECT ID, col2
MAX (CASE WHEN level = "level 1" then 1
level = 'level 2' then 2
Level = 3 then 'niveau3') as colIN3)
FROM table1 GROUP BY ID2, a.;
the first table have duplicates as follows:
Id2 COL2 COL3 level
A1 pepe football level1
A1 pepe football level2
A1 pepe football level1
A1 pepe basket level2
A1 pepe pingpong level3
the output should be selected with unique key (ID2, col3) lines and the level must be the greatest.
Id2 COL2 COL3 level
A1 pepe football level2
A1 pepe basket level2
A1 pepe pingpong level3
The output of the script tells me the following messages:
-lack of right parenthesis referring to the max function.
Thanks adavance.
Kind regards
Hello
Remember the ABC's of the GROUP BY:
When you use a GROUP BY clause or in an aggregate function, then all in the SELECT clause must be:
(A) a ggregate function,
(B) one of the expressions "group By."
(C) adding to C, or
(D) something that Depends on the foregoing. (For example, if you "GROUP BY TRUNC (dt)", you can SELECT "TO_CHAR (TRUNC (dt), 'Mon - DD')").
To ask him, there are 5 columns in the SELECT clause. The last one is a function MAX (...); It is an aggregate, is not serious.
The first 2 columns are also named in the GROUP BY clause, so that they are well.
The other 2 columns, country and internal_Id do not match any of the above categories. These 2 columns cause the error.
There are many ways to avoid this error, each producing different results. You could
- remove these 2 columns in the SELECT clause
- Add these 2 columns in the GROUP BY clause
- use the aggregation such as MIN, 2-column functions
- remove the country from the SELECT clause and add internal_id to the GROUP BY clause
- remove the internal_id from the SELECT clause, and add countries to the GROUP BY clause
- ...
What are the results you want?
Whenever you have a question, please post a small example of data (CREATE TABLE and INSERT statements) for all the tables involved, so people who want to help you can recreate the problem and test their ideas. Also post the results you want from this data, as well as an explanation of how you get these results from these data.
Always say what version of Oracle you are using (for example, 11.2.0.2.0).
See the FAQ forum: https://forums.oracle.com/message/9362002
-
Hello experts...
I'm new to this forum and Oracle coding complex.
I have a task in which I want to compare two tables with the same structure, same columns. My Oracle database is 11g Release 2. I want this column-by-column comparison and save the result in a separate table. (say result_table)
The structure of the table would be as follows:
SQL > desc emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER 4
ENAME VARCHAR2 (10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER (2)
SQL > emp_comp desc;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER 4
ENAME VARCHAR2 (10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER (2)
Both of the tables EMPNO is the primary key.
I want to compare these two tables based on the EMPNO (EMPNO even is both tables).
The result log table would be as follows:
SQL > create table result_table
2 (check_sr_no, number (5),)
table_name 3 varchar2 (30),
ROW_ID 4 varchar2 (20).
column_name 5 varchar2 (20).
6 column_data varchar2 (1000).
compared_by 7 varchar2 (10));
Table created.
SQL > alter table result_table
2 Add the constraint result_table_pk
3 primary key (check_sr_no);
Modified table.
The name of the table and the name of the column will not be hardcoded (based parameter by user)
I tried to use the dbms_comparison package, but do not find comparison of column to column.
I also used by using the query operator LESS. It's showing the difference in rank.
I also went to https://asktom.oracle.com/pls/apex/f?p=100:11:0:P11_QUESTION_ID:2151582681236
Your help will be very appreciated.
Thank you
DK
Tom Kyte has answered this question MANY times over the years. Here are links for its solution
https://asktom.Oracle.com/pls/Apex/f?p=100:11:0:P11_QUESTION_ID:4934799800346640847
-
Extract single line transformed from two tables
I have two tables T1 and T2 with the same set of columns. The columns are C1, C2, C3, COND1. I need to issue a query that returns a line transformed in order to respect the following rules:
1. the returned line may contain values from both tables based on the values of column in table T1.
2 return the column C1 in table T1; If it is NULL, then return to any value is present in the column C1 of T2.
3. article 2 above apply to all columns like C1, C2 etc.
I published the following query. The problem is that if a subquery does not reach the entire query fails. Someone help me please. Probably there is another simple method.
SELECT NVL (T1.c1, T2.c1) c1, c2 (T1.c2, T2.c2) NVL NVL (T1.c3, T2.c3) c3
FROM (SELECT c1, c2, c3
FROM T1
WHERE cond1 = 'T10') T1
(SELECT c1, c2, c3
THE T2
WHERE cond1 = "T200") T2;
Hello
user4274403 wrote:
I have two tables T1 and T2 with the same set of columns. The columns are C1, C2, C3, COND1. I need to issue a query that returns a line transformed in order to respect the following rules:
1. the returned line may contain values from both tables based on the values of column in table T1.
2 return the column C1 in table T1; If it is NULL, then return to any value is present in the column C1 of T2.
3. article 2 above apply to all columns like C1, C2 etc.
I published the following query. The problem is that if a subquery does not reach the entire query fails. Someone help me please. Probably there is another simple method.
SELECT NVL (T1.c1, T2.c1) c1, c2 (T1.c2, T2.c2) NVL NVL (T1.c3, T2.c3) c3
FROM (SELECT c1, c2, c3
FROM T1
WHERE cond1 = 'T10') T1
(SELECT c1, c2, c3
THE T2
WHERE cond1 = "T200") T2;
Are you saying that if there is no row in t1 that satisfy the condition cond1 = "T10", then you want to keep seeing the lines (and values) of the t2?
And even, if there is no row in t2 that satisfy the cond1 = "T200" condition, then you want to keep seeing the lines (and values) from t1?
If so, this looks like a job for a full outer join.
You can change the join in a full outer join as follows:
SELECT NVL (T1.c1, T2.c1) AS c1
, NVL (T1.c2, T2.c2) C2
NVL (T1.c3, T2.c3) AS c3
FROM T1
FULL OUTER JOIN T2 ON t1.cond1 = 'T10 '.
AND t2.cond1 = 'T200.
WHERE t1.cond1 = 'T10 '.
OR t2.cond1 = "T200"
;
If you would care to post CREATE TABLE and INSERT instructions for some examples of data, then I could test this.
What happens if no table has all the lines that have good values in cond1?
-
JOIN the question... Join two tables without omitting lines
I came across a problem that should be an easy fix (I hope), but I'm having a hard time to come up with a solution.
Basically I have two tables, one with the actual amounts with the budget. I have to write a sql statement select that joins these tables together and includes all of their lines. I was able to join the tables by using JOIN, LEFT JOIN and RIGHT JOIN, but it always fails the lines I need.
Below, I have examples of my tables (AMOUNT_TABLE and BUDGET_TABLE). For simplicity, I built the examples to show the same values in the first four columns, with the 5th and 6th columns (SUB_ACCOUNT, AMOUNT, BUDGET) as the only values that are different. My actual tables are not quite that simple, but I don't think it was relavent to this issue.
AMOUNT_TABLE
FISCAL_YEAR PERIOD ACCT_UNIT ACCOUNT SUB_ACCOUNT AMOUNT 2013
1 11111 555555 0000 100 2013 1 11111 555555 1000 100 2013 1 11111 555555 2000 100 2013 1 11111 555555 3000 100 2013 1 11111 555555 4000 100 BUDGET_TABLE
FISCAL_YEAR PERIOD ACCT_UNIT ACCOUNT SUB_ACCOUNT BUDGET 2013
1 11111 555555 3000 200 2013 1 11111 555555 4000 200 2013 1 11111 555555 5000 200 2013 1 11111 555555 6000 200 Here's what I hope. Note that SUB_ACCOUNTs 0000, 1000, and 2000 show without budget amounts since there is not a corresponding line in the BUDGET_TABLE. And same for SUB_ACCOUNTs 5000 and 6000, they show budgets with no amount because there is not a corresponding line in the AMOUNT_TABLE.
(exit)
FISCAL_YEAR PERIOD ACCT_UNIT ACCOUNT SUB_ACCOUNT AMOUNT BUDGET 2013 1 11111 555555 0000 100 0 2013 1 11111 555555 1000 100 0 2013 1 11111 555555 2000 100 0 2013 1 11111 555555 3000 100 200 2013 1 11111 555555 4000 100 200 2013 1 11111 555555 5000 0 200 2013 1 11111 555555 6000 0 200 If all goes well, my question is clear. Any help on this would be greatly appreciated. Thanks in advance.
Use the join ANSI - FULL OUTER JOIN syntax:
with amount_table like)
Select fiscal_year 2013, 1 period, 11111 acct_unit, 555555, 0000 sub_account, amount 100 of all the double union
Select 2013,1,11111,555555,1000,100 from all the double union
Select 2013,1,11111,555555,2000,100 from all the double union
Select 2013,1,11111,555555,3000,100 from all the double union
Select double 2013,1,11111,555555,4000,100
),
budget_table like)
Select 1 time, 11111 acct_unit, account 555555, sub_account 3000, 2013 fiscal_year, budget of 200 Union double all the
Select 2013,1,11111,555555,4000,200 from all the double union
Select 2013,1,11111,555555,5000,200 from all the double union
Select double 2013,1,11111,555555,6000,200
)
Select nvl (a.fiscal_year, b.fiscal_year) fiscal_year,
period of NVL (a.period, b.period),
NVL (a.acct_unit, b.acct_unit) acct_unit.
account of NVL (a.Account, b.Account),
NVL (a.sub_account, b.sub_account) sub_account.
Amount NVL(a.amount,0),
NVL(b.budget,0) budget
of amount_table one
full join
budget_table b
on)
a.Fiscal_Year = b.fiscal_year
and
a.period = b.period
and
a.acct_unit = b.acct_unit
and
a.Account = b.account
and
a.sub_account = b.sub_account
)
/
FISCAL_YEAR PERIOD ACCT_UNIT ACCOUNT SUB_ACCOUNT AMOUNT BUDGET
----------- ---------- ---------- ---------- ----------- ---------- ----------
2013 1 11111 555555 0 100 0
2013 1 11111 555555 1000 100 0
2013 1 11111 555555 2000 100 0
2013 1 11111 555555 3000 100 200
2013 1 11111 555555 4000 100 200
2013 1 11111 555555 6000 0 200
2013 1 11111 555555 5000 0 2007 selected lines.
SQL >
SY.
-
Loads separate lines into PO_LINES through the interface tables
Hi gurus
I need to load a standard PO via the interface. In interface tables there are several lines using a single ITEM_ID, changing only ITEM_DESCRIPTION.
This ITEM_ID is a service, each line represents a detail of this service.
After the import process, in PO_LINES, there is a single line with amount total.
How can I do to load separate lines in PO_LINES?
Thanks in advance
OscarHi Oscar,.
Unfortunately, there is no way to do it using PDOI... Try to use the private api po_interface_s.create_document. But the problem is that you might not be able to use it as a... have to copy this API and modify as needed.
Kind regards
Praveen -
Several lines to a format of columns from two tables
Oracle Database 11 g Enterprise Edition Release 11.1.0.7.0 - 64 bit Production
The difficulty to return several lines simple lines/columns in two tables.
Table 1:
ID BOOK_NBR
1 1001
1 2001
2 1010
3 1020
Table 2:
AUTHOR BOOK_NBR
1001 JOHN_1
2001 JOHN_2
MARY 1010
1020 JUNE
Desired output:
ID BOOK_NBR AUTHOR BOOK_NBR AUTHOR
1 1001 JOHN_1 2001 JOHN_2
2 MARY 1010
3-1020 JUNE
There are an unknown number of BOOK_NBR to one ID.
Any guidance would be appreciated.
-
How to remove duplicates in two separate lines in SQL?
Hello
I need to identify the data in double with two separate lines. See my below data structure.
INDEX OF NAMES NAME_1 START_DATE END_DATE FLAG VALUE
B ON 275 SE 13/12/2005-31/12/2010 1
SELF 1 375
SELF 1 475
ON 275 SE 2 B 13/12/2005-31/12/2010
SELF 2 375
SELF 2 475
ON SE 175 13/12/2006 AND 31/12/2010 B 3
SELF 3 375
SE ON 3 475
This is my sample data. Here, the data is mirrored with different index columns. INDEX 1 and 2 contains the same combination group. I so need to identify one of the combination double (i.e. INDEX 1 or 2). Anyone can come up with the exact solution?
Thank youI thought it had to do with the order of the INDEX field. The query checks only the value of the previous INDEX value.
I think I found what the problem was.
Try this:
with test_table as (select 'SUR' NAME, 'SE' NAME_1, '275' VALUE, to_date('13/12/2005','DD/MM/YYYY') START_DATE, to_date('31/12/2010','DD/MM/YYYY') END_DATE, 'B' FLAG, 1 IND from dual union all select 'SUR', 'SE', '375', null, null, 'A', 1 from dual union all select 'SUR', 'SE', '475', null, null, 'A', 1 from dual union all select 'SUR', 'SE', '275', to_date('13/12/2005','DD/MM/YYYY') ,to_date('31/12/2010','DD/MM/YYYY') ,'B', 2 from dual union all select 'SUR', 'SE', '375', null, null, 'A', 2 from dual union all select 'SUR', 'SE', '475', null, null, 'A', 2 from dual union all select 'SUR', 'SE', '175', to_date('13/12/2006','DD/MM/YYYY'), to_date('31/12/2010','DD/MM/YYYY'), 'B', 3 from dual union all select 'SUR', 'SE', '375', null, null, 'A', 3 from dual union all select 'SUR', 'SE', '475', null, null, 'A', 3 from dual union all select 'SUR', 'SE', 'IPT', to_date('13/12/2005','DD/MM/YYYY'), to_date('31/12/2010','DD/MM/YYYY'), 'B', 100 from dual union all select 'SUR', 'SE', '375',null, null, 'A', 100 from dual union all select 'SUR', 'SE', 'AO', null, null, 'A', 100 from dual union all select 'SUR', 'SE', 'IPT', to_date('13/12/2005','DD/MM/YYYY'), to_date('31/12/2010','DD/MM/YYYY'), 'B', 218 from dual union all select 'SUR', 'SE', '375' ,null, null,'A' ,218 from dual union all select 'SUR', 'SE', 'AM' ,null, null,'A' ,218 from dual union all select 'SUR', 'SE', 'IPT' , to_date('13/12/2005','DD/MM/YYYY'), to_date('31/12/2008','DD/MM/YYYY'), 'B', 334 from dual union all select 'SUR', 'SE', '375' ,null, null,'A', 334 from dual union all select 'SUR', 'SE', 'AP',null, null, 'A', 334 from dual union all select 'SUR', 'SE', 'IPT' , to_date('01/01/2009','DD/MM/YYYY'), to_date('31/12/2010','DD/MM/YYYY'), 'B', 335 from dual union all select 'SUR', 'SE', '375' ,null, null,'A', 335 from dual union all select 'SUR', 'SE', 'AP',null, null, 'A', 335 from dual union all select 'SUR', 'SE', 'IPT' , to_date('13/12/2005','DD/MM/YYYY'), to_date('31/12/2010','DD/MM/YYYY'), 'B', 336 from dual union all select 'SUR', 'SE', '375' ,null, null,'A', 336 from dual union all select 'SUR', 'SE', 'AP',null, null, 'A', 336 from dual) SELECT name, name_1, value, start_date, end_date, flag, ind, MIN(diff_flag) over(PARTITION BY NAME, NAME_1, IND) min_flag FROM (SELECT t3.*, CASE WHEN lag(VALUE, lag_flag)OVER(ORDER BY IND, start_date, VALUE) != VALUE AND flag = 'A' THEN 1 WHEN (lag(value, lag_flag)OVER(ORDER BY IND, start_date, VALUE) != value OR lag(start_date, lag_flag) OVER(ORDER BY IND, start_date, VALUE) != start_date OR lag(end_date, lag_flag) OVER(ORDER BY IND, start_date, VALUE) != end_date) AND flag = 'B' THEN 1 WHEN lag_flag = 0 THEN 1 ELSE 2 END diff_flag FROM (SELECT t2.*, first_value(lag_count_flag) OVER(PARTITION BY NAME, NAME_1, IND ORDER BY NAME, NAME_1, start_date) lag_flag FROM (SELECT t1.*, CASE WHEN FLAG = 'B' THEN lag(COUNT, 1, 0) OVER(ORDER BY IND, start_date, VALUE) END lag_count_flag FROM (SELECT t.*, COUNT(*) over(PARTITION BY NAME, NAME_1, IND) COUNT, row_number() over(PARTITION BY NAME, NAME_1, VALUE, START_DATE, END_DATE, FLAG ORDER BY IND) row_number FROM test_table t) t1) t2) t3) t4 ORDER BY ind, start_date, VALUE;
Published by: Manuel Vidigal on Abr 13, 2009 18:18
-
View button 'Add a line' if there are no more than two lines in a table
Hello
Is there a possibility of JavaScript to dynamically check number of rows in a table and display the button 'Add Row' in the case where if displayed in number of lines in sub table form is more small/more than some setting?
Example: I have 2 lines in a picture. The button should be indicated if there are no more than 3 lines.
User click on the button - a blank line will be added here. Now, the button is hidden until the number of rows will be less than 3.
Data sheet:
APEX 4.1.1
31%
Listener 1.1.3
Thank you
J
Hello
I solved it by using the little piece of JS:
if ($('#report_contact_form tr.highlight-row').length > 1) $x_Hide('ADD_ROW_T', true);
Concerning
J
-
topics in several lines in a table view - is this possible?
My needs is the ability to graphically to group columns and assign common positions, for example my Business Model r_gion measures for
'expenses actual city', 'forecasts city', "expenses actual city B", 'forecasts city B', ' report Actuals A / B ","city of actual spending C.
I want to show exactly these measures in the form of columns in my table, BUT there should be a common topic 'A city' for the first two columns and then "city B" during the third and fourth column.
is - it somehow possible? can I somehow combine my columns without using pivot ('City' as a dimension in the "columns" of the pivot section would be an option if I didn't have the last two columns, I think..?)Did you read my post carefully? In Table view, you have the opportunity to present the position of the Table and ColumnHeadings. To do this, click on the view of the Table Properties button and click on the "Display Table and column headers" drop-down and select 'as of the separate lines."
Now do what I said above. So for actual expenditures and forecasts from City A, click the button properties of these two columns, select the checkbox "headings"Custom"in column Format tab edit and change the title of the Table" town. "for the column header, you must change it in the"real"and"Forecast", respectively."
Seen in a display table and you will have your multiline headers.
-
Implement conditional read-only column in the set of two Tables
Hello
I would like to implement a mechanism of "read-only conditional" on a column in a table with two tables in total to be involved in this situation.
I have a demo/proof of concept of the present and things work as expected in the tests I've done; However, I would like any input as to if there is a better way, etc.
This is a far-fetched but demo that illustrates the main ingredients however. Oracle 10.2.0.4 version 64 bit on Windows Server 2008 Release 2 64-bit.
-Table DDL and small sample data
-The rules relating to the conditional objective of read-onlycreate table band( band_id number primary key, band_name varchar2(20), status varchar2(20) ); create table band_member( band_id references band, member_name varchar2(20) ); insert into band values(3, 'The Rutles', 'prefab4'); insert into band values(4, 'The Beatles', 'established'); commit; insert into band_member values(3, 'Ron Nasty'); insert into band_member values(3, 'Dirk McQuickly'); insert into band_member values(3, 'Stig O''Hara'); insert into band_member values(3, 'Barrington Womble'); commit; insert into band_member values(4, 'John Lennon'); insert into band_member values(4, 'Paul McCartney'); insert into band_member values(4, 'George Harrison'); insert into band_member values(4, 'Ringo Starr'); commit;
1 is not allowed to update band.band_name when band.status = 'prefab4'
2 is not allowed to insert/update / deletion of lines of band_member when the parent a band.status row = 'prefab4'
-The triggers used to implement the goal (current solution)
-Quick example of test for each conditioncreate or replace trigger t1 before update of band_name on band for each row when (old.status = 'prefab4' or new.status = 'prefab4') begin raise_application_error(-20010, 'can not update band_name when status=''prefab4'''); end; / create or replace trigger t2 before insert or update or delete on band_member for each row declare l_status band.status%type; l_band_id band_member.band_id%type; cursor l_cursor (p_band_id number) is select status from band where band_id = p_band_id for update; begin if updating or inserting then l_band_id := :new.band_id; else l_band_id := :old.band_id; end if; open l_cursor(l_band_id); fetch l_cursor into l_status; close l_cursor; if l_status = 'prefab4' then raise_application_error(-20011, 'can not update child when parent status=''prefab4'''); end if; end; /
As I said, while my simple tests seem to show the correct results, there I was wondering if there could be a better way to implement such functionality.update band set band_name = 'THE RUTLES' where band_id = 3; update band * ERROR at line 1: ORA-20010: can not update band_name when status='prefab4' ORA-06512: at "DEMO.T1", line 2 ORA-04088: error during execution of trigger 'DEMO.T1' update band_member set member_name = 'RON NASTY' where member_name = 'Ron Nasty'; update band_member * ERROR at line 1: ORA-20011: can not update child when parent status='prefab4' ORA-06512: at "DEMO.T2", line 18 ORA-04088: error during execution of trigger 'DEMO.T2'
I tried to provide the information needed, but if I managed to omit something, please let me know.
See you soon,.
ChalfontHi, Chalfont,
user13146957 wrote:
...
I'm went to the road to slider to add the clause "for update" to force the serialization on the line - i.e. the idea was to avoid the case where another session might want to update the State a moment after my extraction but before the rest of the finished code. Who is?No, not really. The trigger on tape prevents anyone else from ever change their status from 'prefab4' to something else (or vice versa).
Even apart from this, you put some efforts to prevent something which will be allowed a fraction of a second later (or maybe the other way around). What is significant in that split second?I didn't think about other ideas rather than the approach of the trigger, but came up empty, somehow, to this day. I am open to resort to others and make some schema changes is not off the table either.
FGA (Fine grain access), or his brothers and sisters more older VPD (virtual private database) can also do what you want, but instead of trigger an error, they ignore the illegal action. This can be an advantage or a disadvantage, depending on your needs.
Another approach is for the owner of the table, not to grant INSERT, UPDATE or DELETE privileges to anyone: all DML must be made via a procedure (or procedures) belonging to the owner of the table, which grants EXECUTE privileges instead of other privileges.
-
Display data from two tables based on date criteria
Hi all
I have two tables, using these two tables and a few conditions I want to recover under result. Oracle version is (Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64 bit Production)
logon_histories_r table records the information of each user who connects to the system. Subscriber Details table contains all the information corresponding to subscriber_no, only 1 row should be returned.LOGON_ID USER_ID LOGON_TIME LOGON_TYPE SUBSCRIBER_NO CUSTOMER_ID 26063548 4528890298 4/5/2010 12:03:58 AM MSISDN GSM04528890298 581751708
I'm confused usage date condition for the table of the Subscriber, the input parameter date 04/04/2006 to 15/04/06
Select lh.logon_id, lh.user_id, lh.logon_time, lh.logon_type, subs.subscriber_no, subs.customer_id
of logon_histories_r lh, subscribed subs
where lh.logon_time > = to_date('05-04-2010','dd-mm-yyyy')--to_date('04-04-2006','dd-mm-yyyy')
and lh.logon_time < to_date('06-04-2010','dd-mm-yyyy')--to_date('15-01-2007','dd-mm-yyyy')
and lh.user_id = substr (subs.subscriber_no,-10);
If the date range is 04/05/2010 to 04/06/2010 then the data related to the BAN 581751708 must be the result,
If the date range is 04/04/2006 to 15/01/2007 data related to the BAN 502499502 must be the result.
Please find DDL and data relevant to these results. There are millions of records of Subscriber & logon_histories_r table, I am given appropriate providing a subscriber_id.
CREATE TABLE LOGON_HISTORIES_R ( LOGON_ID NUMBER(12) NOT NULL, USER_ID VARCHAR2(15 BYTE) NOT NULL, LOGON_TIME DATE NOT NULL, LOGOUT_TIME DATE, LOGOUT_METHOD VARCHAR2(15 BYTE), LOGON_TYPE VARCHAR2(15 BYTE) DEFAULT 'MSISDN' ); CREATE TABLE SUBSCRIBER ( SUBSCRIBER_NO VARCHAR2(20 BYTE) NOT NULL, CUSTOMER_ID NUMBER(9) NOT NULL, SYS_CREATION_DATE DATE NOT NULL, SYS_UPDATE_DATE DATE, OPERATOR_ID NUMBER(9), APPLICATION_ID CHAR(6 BYTE), DL_SERVICE_CODE CHAR(5 BYTE) NOT NULL, DL_UPDATE_STAMP NUMBER(4), EFFECTIVE_DATE DATE NOT NULL, INIT_ACTIVATION_DATE DATE NOT NULL, SUB_STATUS CHAR(1 BYTE) NOT NULL, SUB_STATUS_DATE DATE NOT NULL, ORIGINAL_INIT_DATE DATE NOT NULL, SUB_STATUS_LAST_ACT CHAR(3 BYTE), SUB_STATUS_RSN_CODE CHAR(4 BYTE), PRODUCT_TYPE CHAR(3 BYTE), CUSTOMER_BAN NUMBER(9), CTN_SEQ_NO NUMBER(9), REQ_ST_GRACE_PERIOD DATE, REQ_END_GRACE_PERIOD DATE, COMMIT_START_DATE DATE, COMMIT_END_DATE DATE, COMMIT_REASON_CODE CHAR(3 BYTE), COMMIT_ORIG_NO_MONTH NUMBER(3), SUSP_RC_RATE_TYPE CHAR(1 BYTE), CONTRACT_NO VARCHAR2(10 BYTE), CNT_SEQ_NO NUMBER(9), DEALER_CODE CHAR(5 BYTE), ORG_DEALER_CODE CHAR(5 BYTE), SALES_AGENT CHAR(5 BYTE), ORG_SALES_AGENT CHAR(5 BYTE), REQ_DEPOSIT_AMT NUMBER(13,2), LEADING_NUMBER VARCHAR2(20 BYTE), PABX_IND CHAR(1 BYTE), NEXT_CTN VARCHAR2(20 BYTE), NEXT_CTN_CHG_DATE DATE, PRV_CTN VARCHAR2(20 BYTE), PRV_CTN_CHG_DATE DATE, NEXT_BAN NUMBER(9), NEXT_BAN_MOVE_DATE DATE, PRV_BAN NUMBER(9), PRV_BAN_MOVE_DATE DATE, SUB_STS_ISSUE_DATE DATE, ACTIVATE_WAIVE_RSN CHAR(6 BYTE), EARLIEST_ACTV_DATE DATE, SUB_ACTV_LOCATION CHAR(4 BYTE), CUST_WATCH_LMT NUMBER(11,2), CUST_WATCH_DATE DATE, BASIC_WATCH_LMT NUMBER(11,2), CREDIT_WATCH_PIN_CD NUMBER(4), SUB_MARKET_CODE CHAR(3 BYTE) NOT NULL, LIMIT_RESERVED_DAYS NUMBER(4), FF_EXPIRATION_DATE DATE, FLEX_IND CHAR(1 BYTE), DUO_IND CHAR(1 BYTE), LISTED_IND CHAR(1 BYTE), SUB_DEPARTMENT_CD CHAR(4 BYTE), LAST_SUBS_DISC_DT DATE, LAST_SUBS_DISC_DT_UD DATE, LAST_SUBSCR_DISC_SN NUMBER(3), LAST_SUBSCR_DISC_SN_UD NUMBER(3), PNI VARCHAR2(10 BYTE), RMS_REF_STORE_ID CHAR(4 BYTE), RMS_REF_TYPE CHAR(1 BYTE), RMS_REF_OD NUMBER(9), DLR_ACT_FEE NUMBER(11,2), PREP_AMOUNT NUMBER(11,2), SUBSCRIBER_ID NUMBER(9) NOT NULL, SUB_LANG CHAR(2 BYTE), SMS_RCV_STYLE_CODE CHAR(2 BYTE), CONV_RUN_NO NUMBER(3), ALLOW_ADVERTISING_IND CHAR(1 BYTE), IVR_WRONG_ACCESS_NO NUMBER(2), THRESHOLD_AMT NUMBER(11,2), PUBLISH_LEVEL CHAR(30 BYTE), AUTO_RELEASE_IND CHAR(1 BYTE), CUST_WATCH_EFF_DATE DATE, CUST_WATCH_EXP_DATE DATE, OPERATOR_CW_LMT NUMBER(11,2), SEND_SMS_FOR_MATCH CHAR(1 BYTE), CPS_STATUS CHAR(1 BYTE), CPS_TRANSACTION NUMBER(3), CPS_TYPE NUMBER(3), ISP_PASS VARCHAR2(30 BYTE), ISP_TYPE CHAR(2 BYTE), OPERATOR_TMP_DATE DATE, OPERATOR_TMP_LMT NUMBER(11,2), SUB_ORG_CD CHAR(10 BYTE), ORG_MEMBER_NO VARCHAR2(20 BYTE) ); Insert into LOGON_HISTORIES_R (LOGON_ID, USER_ID, LOGON_TIME, LOGOUT_TIME, LOGOUT_METHOD, LOGON_TYPE) Values (26063548, '4528890298', TO_DATE('04/05/2010 00:03:58', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/05/2010 00:06:58', 'MM/DD/YYYY HH24:MI:SS'), NULL, 'MSISDN'); Insert into logon_histories_r (LOGON_ID, USER_ID, LOGON_TIME, LOGOUT_TIME, LOGOUT_METHOD, LOGON_TYPE) Values (2649592, '4528890298', TO_DATE('04/10/2006 19:19:20', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/10/2006 19:19:48', 'MM/DD/YYYY HH24:MI:SS'), 'TIMEOUT', 'MSISDN'); Insert into SUBSCRIBER (SUBSCRIBER_NO, CUSTOMER_ID, SYS_CREATION_DATE, SYS_UPDATE_DATE, OPERATOR_ID, APPLICATION_ID, DL_SERVICE_CODE, DL_UPDATE_STAMP, EFFECTIVE_DATE, INIT_ACTIVATION_DATE, SUB_STATUS, SUB_STATUS_DATE, ORIGINAL_INIT_DATE, SUB_STATUS_LAST_ACT, SUB_STATUS_RSN_CODE, PRODUCT_TYPE, CUSTOMER_BAN, CTN_SEQ_NO, REQ_ST_GRACE_PERIOD, REQ_END_GRACE_PERIOD, COMMIT_START_DATE, COMMIT_END_DATE, COMMIT_REASON_CODE, COMMIT_ORIG_NO_MONTH, SUSP_RC_RATE_TYPE, CONTRACT_NO, CNT_SEQ_NO, DEALER_CODE, ORG_DEALER_CODE, SALES_AGENT, ORG_SALES_AGENT, REQ_DEPOSIT_AMT, LEADING_NUMBER, PABX_IND, NEXT_CTN, NEXT_CTN_CHG_DATE, PRV_CTN, PRV_CTN_CHG_DATE, NEXT_BAN, NEXT_BAN_MOVE_DATE, PRV_BAN, PRV_BAN_MOVE_DATE, SUB_STS_ISSUE_DATE, ACTIVATE_WAIVE_RSN, EARLIEST_ACTV_DATE, SUB_ACTV_LOCATION, CUST_WATCH_LMT, CUST_WATCH_DATE, BASIC_WATCH_LMT, CREDIT_WATCH_PIN_CD, SUB_MARKET_CODE, LIMIT_RESERVED_DAYS, FF_EXPIRATION_DATE, FLEX_IND, DUO_IND, LISTED_IND, SUB_DEPARTMENT_CD, LAST_SUBS_DISC_DT, LAST_SUBS_DISC_DT_UD, LAST_SUBSCR_DISC_SN, LAST_SUBSCR_DISC_SN_UD, PNI, RMS_REF_STORE_ID, RMS_REF_TYPE, RMS_REF_OD, DLR_ACT_FEE, PREP_AMOUNT, SUBSCRIBER_ID, SUB_LANG, SMS_RCV_STYLE_CODE, CONV_RUN_NO, ALLOW_ADVERTISING_IND, IVR_WRONG_ACCESS_NO, THRESHOLD_AMT, PUBLISH_LEVEL, AUTO_RELEASE_IND, CUST_WATCH_EFF_DATE, CUST_WATCH_EXP_DATE, OPERATOR_CW_LMT, SEND_SMS_FOR_MATCH, CPS_STATUS, CPS_TRANSACTION, CPS_TYPE, ISP_PASS, ISP_TYPE, OPERATOR_TMP_DATE, OPERATOR_TMP_LMT, SUB_ORG_CD, ORG_MEMBER_NO) Values ('GSM04528890298', 110069191, TO_DATE('12/04/2001 17:06:17', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('01/01/2004 22:42:49', 'MM/DD/YYYY HH24:MI:SS'), NULL, 'FUTRX ', 'CS016', NULL, TO_DATE('01/02/2004 00:08:32', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('07/31/2000 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'C', TO_DATE('01/02/2004 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('07/31/2000 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'CAN', 'CNP3', 'GSM', 110069191, 7013986, NULL, NULL, TO_DATE('07/31/2000 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('01/31/2001 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'PPD', 6, NULL, NULL, 1008631, 'DCNV ', 'DCNV ', 'DFLT ', 'DFLT ', 0, NULL, 'S', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TO_DATE('01/02/2004 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL, TO_DATE('07/31/2000 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'TEMO', 0, NULL, 0, NULL, 'TEL', NULL, NULL, 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 8635, 'DK', '01', 1, 'N', NULL, 0, '1234', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); Insert into SUBSCRIBER (SUBSCRIBER_NO, CUSTOMER_ID, SYS_CREATION_DATE, SYS_UPDATE_DATE, OPERATOR_ID, APPLICATION_ID, DL_SERVICE_CODE, DL_UPDATE_STAMP, EFFECTIVE_DATE, INIT_ACTIVATION_DATE, SUB_STATUS, SUB_STATUS_DATE, ORIGINAL_INIT_DATE, SUB_STATUS_LAST_ACT, SUB_STATUS_RSN_CODE, PRODUCT_TYPE, CUSTOMER_BAN, CTN_SEQ_NO, REQ_ST_GRACE_PERIOD, REQ_END_GRACE_PERIOD, COMMIT_START_DATE, COMMIT_END_DATE, COMMIT_REASON_CODE, COMMIT_ORIG_NO_MONTH, SUSP_RC_RATE_TYPE, CONTRACT_NO, CNT_SEQ_NO, DEALER_CODE, ORG_DEALER_CODE, SALES_AGENT, ORG_SALES_AGENT, REQ_DEPOSIT_AMT, LEADING_NUMBER, PABX_IND, NEXT_CTN, NEXT_CTN_CHG_DATE, PRV_CTN, PRV_CTN_CHG_DATE, NEXT_BAN, NEXT_BAN_MOVE_DATE, PRV_BAN, PRV_BAN_MOVE_DATE, SUB_STS_ISSUE_DATE, ACTIVATE_WAIVE_RSN, EARLIEST_ACTV_DATE, SUB_ACTV_LOCATION, CUST_WATCH_LMT, CUST_WATCH_DATE, BASIC_WATCH_LMT, CREDIT_WATCH_PIN_CD, SUB_MARKET_CODE, LIMIT_RESERVED_DAYS, FF_EXPIRATION_DATE, FLEX_IND, DUO_IND, LISTED_IND, SUB_DEPARTMENT_CD, LAST_SUBS_DISC_DT, LAST_SUBS_DISC_DT_UD, LAST_SUBSCR_DISC_SN, LAST_SUBSCR_DISC_SN_UD, PNI, RMS_REF_STORE_ID, RMS_REF_TYPE, RMS_REF_OD, DLR_ACT_FEE, PREP_AMOUNT, SUBSCRIBER_ID, SUB_LANG, SMS_RCV_STYLE_CODE, CONV_RUN_NO, ALLOW_ADVERTISING_IND, IVR_WRONG_ACCESS_NO, THRESHOLD_AMT, PUBLISH_LEVEL, AUTO_RELEASE_IND, CUST_WATCH_EFF_DATE, CUST_WATCH_EXP_DATE, OPERATOR_CW_LMT, SEND_SMS_FOR_MATCH, CPS_STATUS, CPS_TRANSACTION, CPS_TYPE, ISP_PASS, ISP_TYPE, OPERATOR_TMP_DATE, OPERATOR_TMP_LMT, SUB_ORG_CD, ORG_MEMBER_NO) Values ('GSM04528890298', 502499502, TO_DATE('12/05/2006 15:55:13', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('01/12/2007 00:45:22', 'MM/DD/YYYY HH24:MI:SS'), NULL, 'FUTRX ', 'CS058', NULL, TO_DATE('01/12/2007 00:45:22', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/05/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'C', TO_DATE('01/12/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/05/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'CCN', 'NP ', 'GSM', 502499502, 14419730, NULL, NULL, TO_DATE('12/05/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('06/04/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'PPD', 6, NULL, '1035393', 6976424, '2311 ', '2311 ', 'DFLT ', 'DFLT ', NULL, '045', 'S', 'GSM04525210338', TO_DATE('01/12/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL, NULL, NULL, NULL, NULL, NULL, TO_DATE('01/12/2007 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL, TO_DATE('12/05/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'TEMO', NULL, NULL, NULL, NULL, 'TEL', NULL, NULL, 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 6834900, 'DK', '01', NULL, 'N', NULL, 9999999.99, '4321', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); Insert into SUBSCRIBER (SUBSCRIBER_NO, CUSTOMER_ID, SYS_CREATION_DATE, SYS_UPDATE_DATE, OPERATOR_ID, APPLICATION_ID, DL_SERVICE_CODE, DL_UPDATE_STAMP, EFFECTIVE_DATE, INIT_ACTIVATION_DATE, SUB_STATUS, SUB_STATUS_DATE, ORIGINAL_INIT_DATE, SUB_STATUS_LAST_ACT, SUB_STATUS_RSN_CODE, PRODUCT_TYPE, CUSTOMER_BAN, CTN_SEQ_NO, REQ_ST_GRACE_PERIOD, REQ_END_GRACE_PERIOD, COMMIT_START_DATE, COMMIT_END_DATE, COMMIT_REASON_CODE, COMMIT_ORIG_NO_MONTH, SUSP_RC_RATE_TYPE, CONTRACT_NO, CNT_SEQ_NO, DEALER_CODE, ORG_DEALER_CODE, SALES_AGENT, ORG_SALES_AGENT, REQ_DEPOSIT_AMT, LEADING_NUMBER, PABX_IND, NEXT_CTN, NEXT_CTN_CHG_DATE, PRV_CTN, PRV_CTN_CHG_DATE, NEXT_BAN, NEXT_BAN_MOVE_DATE, PRV_BAN, PRV_BAN_MOVE_DATE, SUB_STS_ISSUE_DATE, ACTIVATE_WAIVE_RSN, EARLIEST_ACTV_DATE, SUB_ACTV_LOCATION, CUST_WATCH_LMT, CUST_WATCH_DATE, BASIC_WATCH_LMT, CREDIT_WATCH_PIN_CD, SUB_MARKET_CODE, LIMIT_RESERVED_DAYS, FF_EXPIRATION_DATE, FLEX_IND, DUO_IND, LISTED_IND, SUB_DEPARTMENT_CD, LAST_SUBS_DISC_DT, LAST_SUBS_DISC_DT_UD, LAST_SUBSCR_DISC_SN, LAST_SUBSCR_DISC_SN_UD, PNI, RMS_REF_STORE_ID, RMS_REF_TYPE, RMS_REF_OD, DLR_ACT_FEE, PREP_AMOUNT, SUBSCRIBER_ID, SUB_LANG, SMS_RCV_STYLE_CODE, CONV_RUN_NO, ALLOW_ADVERTISING_IND, IVR_WRONG_ACCESS_NO, THRESHOLD_AMT, PUBLISH_LEVEL, AUTO_RELEASE_IND, CUST_WATCH_EFF_DATE, CUST_WATCH_EXP_DATE, OPERATOR_CW_LMT, SEND_SMS_FOR_MATCH, CPS_STATUS, CPS_TRANSACTION, CPS_TYPE, ISP_PASS, ISP_TYPE, OPERATOR_TMP_DATE, OPERATOR_TMP_LMT, SUB_ORG_CD, ORG_MEMBER_NO) Values ('GSM04528890298', 581751708, TO_DATE('03/31/2010 19:10:33', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/01/2010 16:17:40', 'MM/DD/YYYY HH24:MI:SS'), 10077, NULL, 'CS009', NULL, TO_DATE('03/31/2010 19:10:33', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'A', TO_DATE('03/31/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'NAC', 'CA ', 'GSM', 581751708, 24798333, NULL, NULL, TO_DATE('03/31/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/29/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL, 6, NULL, NULL, 12093584, '2357 ', '2357 ', 'DFLT ', 'DFLT ', NULL, '045', 'S', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TO_DATE('03/31/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL, TO_DATE('03/31/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'TEMO', NULL, NULL, NULL, NULL, 'TEL', NULL, TO_DATE('12/31/4700 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 9474437, 'DK', '01', NULL, 'N', NULL, 999999999.99, '12', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); Insert into SUBSCRIBER (SUBSCRIBER_NO, CUSTOMER_ID, SYS_CREATION_DATE, SYS_UPDATE_DATE, OPERATOR_ID, APPLICATION_ID, DL_SERVICE_CODE, DL_UPDATE_STAMP, EFFECTIVE_DATE, INIT_ACTIVATION_DATE, SUB_STATUS, SUB_STATUS_DATE, ORIGINAL_INIT_DATE, SUB_STATUS_LAST_ACT, SUB_STATUS_RSN_CODE, PRODUCT_TYPE, CUSTOMER_BAN, CTN_SEQ_NO, REQ_ST_GRACE_PERIOD, REQ_END_GRACE_PERIOD, COMMIT_START_DATE, COMMIT_END_DATE, COMMIT_REASON_CODE, COMMIT_ORIG_NO_MONTH, SUSP_RC_RATE_TYPE, CONTRACT_NO, CNT_SEQ_NO, DEALER_CODE, ORG_DEALER_CODE, SALES_AGENT, ORG_SALES_AGENT, REQ_DEPOSIT_AMT, LEADING_NUMBER, PABX_IND, NEXT_CTN, NEXT_CTN_CHG_DATE, PRV_CTN, PRV_CTN_CHG_DATE, NEXT_BAN, NEXT_BAN_MOVE_DATE, PRV_BAN, PRV_BAN_MOVE_DATE, SUB_STS_ISSUE_DATE, ACTIVATE_WAIVE_RSN, EARLIEST_ACTV_DATE, SUB_ACTV_LOCATION, CUST_WATCH_LMT, CUST_WATCH_DATE, BASIC_WATCH_LMT, CREDIT_WATCH_PIN_CD, SUB_MARKET_CODE, LIMIT_RESERVED_DAYS, FF_EXPIRATION_DATE, FLEX_IND, DUO_IND, LISTED_IND, SUB_DEPARTMENT_CD, LAST_SUBS_DISC_DT, LAST_SUBS_DISC_DT_UD, LAST_SUBSCR_DISC_SN, LAST_SUBSCR_DISC_SN_UD, PNI, RMS_REF_STORE_ID, RMS_REF_TYPE, RMS_REF_OD, DLR_ACT_FEE, PREP_AMOUNT, SUBSCRIBER_ID, SUB_LANG, SMS_RCV_STYLE_CODE, CONV_RUN_NO, ALLOW_ADVERTISING_IND, IVR_WRONG_ACCESS_NO, THRESHOLD_AMT, PUBLISH_LEVEL, AUTO_RELEASE_IND, CUST_WATCH_EFF_DATE, CUST_WATCH_EXP_DATE, OPERATOR_CW_LMT, SEND_SMS_FOR_MATCH, CPS_STATUS, CPS_TRANSACTION, CPS_TYPE, ISP_PASS, ISP_TYPE, OPERATOR_TMP_DATE, OPERATOR_TMP_LMT, SUB_ORG_CD, ORG_MEMBER_NO) Values ('GSM04528890298', 816370100, TO_DATE('09/03/2005 10:12:13', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/14/2006 12:20:09', 'MM/DD/YYYY HH24:MI:SS'), 14462, NULL, 'CS016', NULL, TO_DATE('03/14/2006 12:20:08', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/03/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'C', TO_DATE('03/14/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/03/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'CAN', 'CNP3', 'GSM', 816370100, 12575966, NULL, NULL, TO_DATE('09/03/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/02/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'PPD', 6, NULL, '690925', 3436964, '4243 ', '4243 ', 'DFLT ', 'DFLT ', NULL, '045', 'S', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TO_DATE('03/14/2006 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL, TO_DATE('09/03/2005 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'TEMO', NULL, NULL, NULL, NULL, 'TEL', NULL, NULL, 'N', 'N', 'Y', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1436383, 'DK', '01', NULL, 'N', NULL, 9999999.99, '0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
Hello
Welcome to the froum!
Thanks for posting the CREATE TABLE and INSERT! It's very nigra.
user12990691 wrote:
...
logon_histories_r table records the information of each user who connects to the system. Subscriber Details table contains all the information corresponding to subscriber_no, only 1 row should be returned.Do you mean a line by the user, or a line every time that you run the report, regardless of the number of users connected during the period that interests us?
Anyway, if there are multiple logons, how do you decide that one? Or the output of logon_histories_r columns will be a sort of composite?I'm confused usage date condition for the table of the Subscriber, the input parameter date 04/04/2006 to 15/04/06
Select lh.logon_id, lh.user_id, lh.logon_time, lh.logon_type, subs.subscriber_no, subs.customer_id
of logon_histories_r lh, subscribed subs
where lh.logon_time > = to_date('05-04-2010','dd-mm-yyyy')--to_date('04-04-2006','dd-mm-yyyy')
and lh.logon_time< to_date('06-04-2010','dd-mm-yyyy')="" --="">
and lh.user_id = substr (subs.subscriber_no,-10);Must LH.LOGON_TIME match something in the subscruber table? If so, you need to addsome extra join pathological.
For example, if lh.logon_time must be between d1 and d2 (where d1 and d2 are DATE columns), then:select lh.logon_id , lh.user_id , lh.logon_time , lh.logon_type , subs.subscriber_no , subs.customer_id from logon_histories_r lh , subscriber subs where lh.logon_time >= to_date ('05-04-2010','dd-mm-yyyy') -- to_date('04-04-2006','dd-mm-yyyy') and lh.logon_time < to_date ('06-04-2010','dd-mm-yyyy') -- to_date('15-01-2007','dd-mm-yyyy') and lh.user_id = substr (subs.subscriber_no, -10) and lh.logon_time >= subs.d1 -- New condition added and lh.logon_time <= subs.d2 -- New condition added ;
Please find DDL and data relevant to these results. There are millions of records of Subscriber & logon_histories_r table, I am given appropriate providing a subscriber_id.
That's smart, don't not post each row of the table: looks like you posted just enough to show what the problem is.
Try to do the same thing with the columns. Do not post every single column, just the columns that have something to do with the problem. -
Two Tables of FACTS, some common Dimensions and common
Hello to all, question, I'm sure you have met in the past, but always wanted to get your opinion.
I have a few FACT tables and dimensions that are shared (common size). Rest of the dimensions are related to one or the other FACT tables.
What is the best way to present a view where users CAN pull information from both tables?
I managed by pulling the shared dimensions (common) on the tables of BOTH FACTS and having the same grain, but this view breaks down when I pull information from a Dimension that does not much to do with another.
What is the best way to present it? Should it be broken down in three areas?
Business line 1-> some Dims-> FACT Table has
Area 2-> some Dims-> Table of FACTS B
AND
Business line 3-> * only commune Dims *-> Table of FACTS A & B Table of FACTS?
Your comments are always appreciated.
Kind regards
Published by: user10679130 on October 12, 2009 15:27Start by checking the forum for similar discussions/questions.
Join two tables of facts different dimensions in the single logical table
http://108obiee.blogspot.com/2009/08/joining-two-fact-tables-with-different.htmlThis solution maintains two tables of facts in the same area in the logical table is unique, with municipalities and non-common dimensions.
Concerning
Goran
http://108obiee.blogspot.com
Maybe you are looking for
-
How to remove the icon from the finder toolbar
How can I remove this icon from the finder (far left)? I tried searching for its application to remove, and the command option drag does not seem to work. The application is called 'canon IJ network scanner selector. Thank you
-
Hello I use DAQmx Write (Bool digital 1Line 1 point) to send a Boolean sample to a digital output channel. I want to be able to tell if the signal is strong or weak, so I use DAQmx Read (Bool digital 1Line 1 point) to take up the task as input and t
-
Lenses and camera full photo frame
I currently have the 1100D, and I could soon get the 5 d Mark II. I just need to know if my lenses are compatible with the Mark II. My lenses are: 28-105mm and 90-300mm. My lenses are compatible with this camera? Thanks in advance!
-
Installing the card WWAN on T500
Has anyone he moved? I think make a (wwan upgreadable means that you say yourself right?
-
Re Windows XP: At the opening of the hearts, the window is very small. How can I increase the window to fill the screen. Double click on the top panel does not work.