How to compare substring in two tables fields
Hi ABAP expert,
When I want to select database two tables, we just want to compare two table substring. For Example, both fields have yyyymmdd. But I have interested yyyymm. In the Oracle database and SQL server database, I can easily to use substr to achieve those goals. How in the ABAP program to archive those goals.
Thanks in advance,
Cliff Fan
Hi you can access substrings in ABAP the following way:
data: s type string value 'yyyymmdd'.
write: / s(6). "yyyymm
write: / s+4(4). "mmdd
so the number after '+' determines the position in the string and the number in parenthesis () determines the length of the substring.
Now you can just loop over both of your tables and perform the necessary comparison in the nested loop.
Similar Messages
-
How to compare data between two tables?
Hi,
My team is trying to develop a SAP data migration tool (DMT) using ABAP.
One of the functionalities in the DMT is to validate the data in the staging area against the loaded SAP data.
The tables in the stagin area are customer tables (i.e. user-defined tables starting with Y, Z).
How do I compare the data in the staging area against data that are loaded into SAP tables? Are there some built-in SAP functions to do this? Or, are there some better ways of doing this (e.g. instead of comparing against data in the SAP tables, we compare with some INTERNAL tables)?
Any help would be greatly appreciated, thanks!Hi Kian,
Use <b>SCMP</b> transaction to compare data between two tables and you can not use this for comparing internal tables.
Thanks,
Vinay -
Comparing Structure of Two Tables
I need to compare the structure of two tables (fields, field types, field
lengths, indices, etc.) to determine if they have the same schema, even if
the fields may be in a different order. Is there a command in SQL as well in Oracle that will do this? This will be used to determine if the tables are basically the sameHi,
to determine if they have the same schemaEven if 2 table strictly have the same structure, this does not mean they belong to the same schema. Try:CREATE TABLE USER1.TEST
( A NUMBER );
CREATE TABLE USER2.TEST
( A NUMBER ); You'll see they are exactly the same though one is in schema USER1 and the other in schema USER2.
Anyway you can have a look into DBA_TABLES, DBA_TAB_COLUMNS, DBA_INDEXES, DBA_IND_COLUMNS, ... in order to retrivev and compare the tables structures.
Regards,
Yoann. -
How to check relation between two tables in same database
How to check relation between two tables in same database using Oracle SQL developer. Version 2.1.1.64
Hi,
Try this,
SELECT cons.owner AS child_owner, cons.table_name AS child_table,
cons.constraint_name constaint_name,
cons.constraint_type constraint_type, col.owner parent_owner,
col.table_name parent_table, col.column_name column_name
FROM dba_cons_columns col, dba_constraints cons
WHERE cons.r_owner = col.owner
AND cons.r_constraint_name = col.constraint_name
AND col.owner = 'MY_USER'
ORDER BY child_table;Thanks,
Shankar -
How to insert data into two tables linke with foreign key..
I have two tables
1)EMP(emp_ID,username,emp_type_code)
emp_ID is primary key, emp_type_code is a foreign key references emptype table.
2)emptype(emp_type_code,emp_type_descripton)
emp_type_code is primary key
Could anyone help me ..how to insert data into EMP table. How to insert data into two tables linke with foreign key..CREATE TABLE "CATDB"."DWDIMUSER"
"USER_ID" NUMBER(10,0) NOT NULL ENABLE,
"SPECIALTY_ID" NUMBER(10,0),
"FULLNAME" VARCHAR2(20 BYTE),
"FNAME" VARCHAR2(20 BYTE),
"LNAME" VARCHAR2(20 BYTE),
"USER_SUBTYPE" VARCHAR2(20 BYTE),
CONSTRAINT "DIMUSER_PK" PRIMARY KEY ("USER_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "CATDB" ENABLE,
CONSTRAINT "DIMUSER_DIMSPECIALTY_FK" FOREIGN KEY ("SPECIALTY_ID") REFERENCES "CATDB"."DWDIMSPECIALTY" ("SPECIALTY_ID") DISABLE
CREATE TABLE "CATDB"."DIMSPECIALTY"
"SPECIALTY_ID" NUMBER(10,0) NOT NULL ENABLE,
"SPECIALTY_NAME" VARCHAR2(100 BYTE),
CONSTRAINT "DIMSPECIALTY_PK" PRIMARY KEY ("SPECIALTY_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "CATDB" ENABLE
INSERT INTO DIMUSER (FullName, FNAME, LNAME, USER_TYPE, USER_SUBTYPE)
SELECT DISTINCT
Engineer AS FullName,
regexp_substr(Engineer , '[^,| ]+', 1, 1) as FName,
regexp_substr(Engineer , '[^,| ]+', 1, 2) as LName ,
'Engineer'
FROM EMPLOYEELOOKUP;
INSERT INTO DIMSPECIALTY (SPECIALTY_NAME)
SELECT DISTINCT SPECIALITY
FROM EMPLOYEELOOKUP;
COMMIT;
CREATE TABLE employeelookup ...IS A TABLE THAT HAS ALL THE DATA NEDED TO BE FILLED IN BOTHE TABLES...
CREATE TABLE "CATDB"."EMPLOYEELOOKUP"
"EMPLOYEELOOKUP_ID" NUMBER(10,0) NOT NULL ENABLE,
"ENGINEER" VARCHAR2(25 BYTE),
"SPECIALTY" VARCHAR2(20 BYTE),
CONSTRAINT "DIMSPECIALTY_PK" PRIMARY KEY ("EMPLOYEELOOKUP_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "CATDB" ENABLE
DATA IN EMPLOYEELOOKUP
Engineer, Specialty,
John, Dow, Electronis,
Dow, Jons, Technician
Stan Smithers Sales
Mark, Richards Marketing
Jenny, Lane Marketing
John, Lee Sales
I NEED TO LOAD THE FOREIGN KEY IN DIMUSER FROM THE DIMSPECIALTY TABLE?
BY USING THE LOOKUP TABLE TO MARCH THE NAMES UNDER THE Engineer COLUMN, SPECIALTY COLUMNE DISTICTIVLY BY JOINING THE DIMSPECILTY TO RISTIVE THE PRIMARY KEY AND FILL IT IN THE DIMUSER TABLE AS A FOREIGNE KEY. -
Comparing rowcounts of two tables
I am trying to write a procedure that will compare the rowcounts in two tables. The situation is we have two sets of tables named 'Txxxx' and 'Hxxxx'. A table such as T153 should have the same number of rows as H153. I want to write a procedure that lists all the tables and their row counts in pairs. I am able to retrieve all the matched pairs but am stuck on how to derive the row count dynamically once I have retrieved the data. For a start I have:
declare
tab1 dba_tables.table_name%type;
tab2 dba_tables.table_name%type;
cursor tab_cursor is
select a.table_name, b.table_name from
dba_tables a, dba_tables b where
substr(a.table_name,1,1) = 'T'
and
substr(b.table_name,1,1) = 'H'
and
substr(a.table_name,2,3) = substr(b.table_name,2,3);
begin
open tab_cursor;
fetch tab_cursor into tab1, tab2;
while tab_cursor%found loop
dbms_output.put_line(tab1 || ' ' ||tab2);
fetch tab_cursor into tab1,tab2;
end loop;
close tab_cursor;
end;
/Try this.
Regards,
Bob.
declare
tab1 dba_tables.table_name%type;
tab2 dba_tables.table_name%type;
sqlcmd varchar2(2000);
t_cnt number;
h_cnt number;
cursor tab_cursor
is
select a.table_name,
b.table_name
from dba_tables a,
dba_tables b
where substr(a.table_name, 1, 1) = 'T'
and substr(b.table_name, 1, 1) = 'H';
and substr(a.table_name, 2, 3) = substr(b.table_name, 2, 3);
begin
open tab_cursor;
fetch tab_cursor
into tab1,
tab2;
while tab_cursor%found loop
dbms_output.put_line(tab1 ||
' ' ||
tab2);
sqlcmd := 'select count(1) from '||tab1;
EXECUTE IMMEDIATE sqlcmd INTO t_cnt;
dbms_output.put_line(tab1 ||' has count = '||t_cnt);
sqlcmd := 'select count(1) from '||tab2;
EXECUTE IMMEDIATE sqlcmd INTO h_cnt;
dbms_output.put_line(tab2 ||' has count = '||h_cnt);
if t_cnt != h_cnt then
--your magic goes here
null;
else
--more magic
null;
end if;
fetch tab_cursor
into tab1,
tab2;
end loop;
close tab_cursor;
end; -
How to compare dates between two items
Hello all,
I am trying to compare dates in two items.
The first item is a computation P45_PAGE_LOADED_TIME
select sysdate from dual;
This essentially keeps track of when the user opened the form. They are accessing data that may become obsolete while they are in the form.
So we have a dynamic action that finds the last_update date from a table. This field is of type date. It is placed in a text field called P45_STATUS.
We then have a notification which we want to fire when P45_PAGE_LOADED_TIME is before P45_STATUS. We tried the following condition
declare
least_date date;
begin
SELECT LEAST(TO_DATE(:P45_STATUS),TO_DATE(:P45_PAGE_LOADED_TIME)) into least_date
from dual;
if least_date = to_date(:P45_STATUS) then
return false;
else
return true;
end if;
end;
Any guidance would be most appreciated.
ThanksMaybe your better off putting your anonymous block into a plsql function.
A function that you can test. If it works in plsql then you must call it in APEX.
I kinda get a headache when I see that least, to_date, to_date query (although I've seen worse :p)
Make it like:
create or replace function fun_least_date(in_status in varchar2,
in_page_loaded_time varchar2) return boolean
is
l_status date;
l_page_loaded_time date;
least_date date;
l_return boolean;
begin
l_status := to_date(in_status, 'FORMAT MASK!!!');
l_page_loaded_time := to_date(in_page_loaded_time, 'FORMAT MASK!!!!');
least_date := least(l_status, l_page_loaded_time);
if least_date = l_status then
l_return := false;
else
l_return := true;
end if;
return l_return
end fun_least_date;If your sure that your function is correct then use it as a condition for your dynamic action.
Regards
Nico
ps: I haven't tested that function. Be aware that you most correctly enter the format mask you use in APEX. Also before APEX may know about these variables you should set a dynamic action on your items to always submit their value to the server when they change!!! -
How to compare content of two text file using StreamTokenizer
hi....
i have two text files...containg field like(name,number,scheme) and(number,date,value)... i want to create a third file containg field like (name,number,date,scheme,value) by using these two table. how to createI think this code can solve your problem.
private static final String DELIM = ",";
* Compile two files.
* @param file1 String the input file 1
* @param file2 String the input file 2
* @param file3 String the output file
* @throws IOException error in reading/writing
public void compileFiles(String file1, String file2, String file3) throws
IOException {
BufferedReader reader1 = new BufferedReader(new InputStreamReader(
new FileInputStream(file1)));
BufferedReader reader2 = new BufferedReader(new InputStreamReader(
new FileInputStream(file2)));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file3)));
String line1 = reader1.readLine();
String line2 = reader2.readLine();
while (line1 != null && line2 != null) {
writer.write(compileLines(line1, line2));
writer.newLine();
line1 = reader1.readLine();
line2 = reader2.readLine();
reader1.close();
reader2.close();
writer.close();
private String compileLines(String line1, String line2) {
StringTokenizer tok1 = new StringTokenizer(line1, DELIM);
StringTokenizer tok2 = new StringTokenizer(line2, DELIM);
String name = tok1.nextToken();
String number = tok1.nextToken();
String scheme = tok1.nextToken();
// ignore number
tok2.nextToken();
String date = tok2.nextToken();
String value = tok2.nextToken();
StringBuffer buffer = new StringBuffer();
buffer.append(name);
buffer.append(DELIM);
buffer.append(number);
buffer.append(DELIM);
buffer.append(date);
buffer.append(DELIM);
buffer.append(scheme);
buffer.append(DELIM);
buffer.append(value);
return buffer.toString();
} -
How to match columns of two tables with
Hello:
I've two tables like below:
Table1:(Base Table)
Country|Prefix|Prefix_Length
CountryA|001|3
CountryB|0012|4
CountryC|00443|5
CountryD|0091|4
Table2:(Detail Table)
Population|Area|Prefix
500|AreaA|0015921
1000|AreaB|00122
400|AreaC|00443743
300|AreaD|0091333
100|AreaA|001
I need to match these two tables with prefix column (which length is not fixed in both tables: but it starts with 00 in both tables). Two different countries prefix can be similar up to a certain length. So, Prefix_Length can be used to determine (exactly) how long should be taken to search from Table2.
Output:
Country|Prefix|Area|Population
CountryA|001|AreaA|600
CountryB|0012|AreaB|1000
CountryC|00443|AreaC|400
CountryD|0091|AreaD|300
Please help me with your valuable feedback.
-TanvirYou have to explain how CountryA population is calculated:
with base_table as (
select 'CountryA' country,'001' prefix,3 prefix_length from dual union all
select 'CountryB','0012',4 from dual union all
select 'CountryC','00443',5 from dual union all
select 'CountryD','0091',4 from dual
detail_table as (
select 500 population,'AreaA' area,'0015921' prefix from dual union all
select 1000,'AreaB','00122' from dual union all
select 400,'AreaC','00443743' from dual union all
select 300,'AreaD','0091333' from dual union all
select 100,'AreaA','001' from dual
-- end of on-the-fly data sample
select country,
b.prefix,
area,
population
from base_table b,
detail_table d
where b.prefix = substr(d.prefix,1,prefix_length)
COUNTRY PREFI AREA POPULATION
CountryA 001 AreaA 500
CountryA 001 AreaB 1000
CountryA 001 AreaA 100
CountryB 0012 AreaB 1000
CountryC 00443 AreaC 400
CountryD 0091 AreaD 300
6 rows selected.
SQL> SY. -
How to generate report from two tables using DAO design pattern?
Hi,
Iam using struts with DAO pattern for my application. According to DAO design im creating model class for each table in my database with getter,setter methods. i have no problem when im generating report from one table. but if have i have to join two tables whatis the better way for doing that? is it good practise to create a new model contains properties from both the tables?
Please help me
Thanks in Advance
RajeshDear Rajesh,
As per the pattern you are creating equivalent java objects for every database table under consideration in which each db field will become a private attribute and public getter and setter methods.
If you have to display data from one table the above approach is sufficient enough.
But in case your database is normalised ..lets take an example of Bank having Branch and Accounts tables. We dont need to repeat the whole information of the branch for every account in that branch. so we prefer to have a branch id in that table....this approach lot of insertion/deletion/updatation anomlies that may exists with the database...
now lets come back to our topic....we shall create two java objects 1) Branch 2) Account.....
When ever u just need to display simple report u can do it staright forward,,,,,now if u want to display branch information along with the account information....the two objects just created are not sufficient
So i suggest u the following approaches
1) Create an attribute of type Branch in the Accounts Object......
This shall serve the purpose of displaying the Btranch information
2) Create a collection object of type ( Vector or ArrayList) which can have objects of Account in the Branch Object,,,
Now its upto u how shall u fill up the objects with appropriate sql queries.
The method that i mentioned is followed by Oracle Toplink and Hibernate ....which provide Object to relation mapping layers.
Any queries ...revert back to me...
Mahesh -
Compare data between two tables
Hey Experts
I am having two tables both are having same structure.
Both r having 210 columns
I want to compare data between these two tables.
I used follwoing query
select * from t1
MINUS
select * from t2but even if thr is diff in 1columns .. i need to search 210 columns which is the exact columns and data
how can i find the exact columns out of these 210 columns ?SShubhangi wrote:
but even if thr is diff in 1columns .. i need to search 210 columns which is the exact columns and data
how can i find the exact columns out of these 210 columns ?This is not a trivial problem to solve. Consider a much simpler data set. In table 1 (four columns) we have
1 A B C
2 D E F
3 A B Dand in In table 2 (four columns) we have
2 X Y Z
3 A B ENow
select * from table1 minus select * from table2gives
1 A B C
2 D E F
3 A B Dwhereas
select * from table2 minus select * from table1gives
2 X Y Z
3 A B ENow clearly the first row in Table1 (ID=1) doesn't match any row in Table2 but it's only two columns out from the last row in Table2 (ID=3). However, the row in Table1 with ID=3 only doesn't match on one column.
So, how do you represent the output?
Clearly what you want can only be achieved if there are some columns which ought to be the same in both tables i.e. key columns. In which case you can use a full outer join link teh two tables, and case statements to display only the values which don't match:
select t1.id as t1_id
, t2.id as t2_id
, case when t1.col1 != t2.col1 then r1.col1 end as t1_col1
, case when t1.col1 != t2.col1 then r1.col1 end as t2_col1
, case when t1.col2 != t2.col2 then r1.col2 end as t1_col2
, case when t1.col2 != t2.col2 then r1.col2 end as t2_col2
, case when t1.col3 != t2.col3 then r1.col3 end as t1_col2
, case when t1.col3 != t2.col4 then r1.col4 end as t2_col2
from table1 t1
full outer join table2 t2
on t1.id = t2.id;Handling nulls is left as an exercise for the reader :)
I agree that typing all this would be extremely tedious for a table with 210 columns, but that's why Nature gave us the ability to generate SQL statements from teh data dictionary.
Cheers, APC -
How to comapare addresses in two tables
HI guys
I have two tables Table A and Table B. In both of them AccountID(PK) and LibAccountID is the FK relationship. Now I have to compare all the address in Table A with Table B example I have to compare Table A's City with Table B's LibCity and they have to be same and same applies for state,zip and country. If even one doesn't match then I need to insert the address from Table A to Table B. This needs to be executed every day. Let me know how to do this. Any help would be really appreciated.
Table A
AccountID
City
State
Zip
Country
TableB
LibAccountID
LibCity,
LibState,
LibZip,
LibCountryuser646635 wrote:
HI guys
I have two tables Table A and Table B. In both of them AccountID(PK) and LibAccountID is the FK relationship. Now I have to compare all the address in Table A with Table B example I have to compare Table A's City with Table B's LibCity and they have to be same and same applies for state,zip and country. If even one doesn't match then I need to insert the address from Table A to Table B. This needs to be executed every day. Let me know how to do this. Any help would be really appreciated.
Table A
AccountID
City
State
Zip
Country
TableB
LibAccountID
LibCity,
LibState,
LibZip,
LibCountrySounds like a materialized view would be a better-er solution to this than writing custom code. Is there some reason that was ruled out? -
How to use substr in external table defnition.
Hi All,
Im using oracle 11g. I have an external table which is reading data from a file. For one of the column, i need to get only the first 250 characters. My external table defnition looks like this
create table tbl_substr
( col1 varchar2(20),
col2 varchar2(250)
organization external
( type oracle_loader
default directory XXXX
access parameters (
records delimited by newline
FIELDS TERMINATED BY '|'
missing field values are null
( col1 ,
col2 "substr(:col2,1,250)"
) ) location ('file.txt') )
reject limit unlimited
But this defnition gives an error when i do select * from tbl_substr
I want to use substr in external table defnition its self and not in SELECT. Also i dont want to crete a view to solve this. If anyone has done this please help.You need to play with COLUMN_TRANSFORMS
http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/et_params.htm#sthref1792
BTW, i too got it from Google. I was not aware about this :)
Amardeep Sidhu -
How to compare data between two worksheet in Excel for applescript
Hi All,
How to compare the data from two different worksheet in Excel and set the value into one worksheet according to the same name? Here is the example. Worksheet 1 & 2 current we have, the final worksheet is the result we want and the value can be input in worksheet 1. Much appreciate if you can help on it.
Worksheet 1:
Name Number
Leo 25
Jame 55
Leo 30
Jame 60
Tim 44
Tomas 77
Lyne 35
Tonny 66
Jame 22
Game 88
Worksheet 2:
Name Number 2
Leo 60
Jame 150
Tim 66
Tomas 88
Lyne 55
Tonny 99
Game 111
Rusult in Worksheet 1
Name Number Total Number per name in Worksheet 1 Number 2 in Worksheet 2
Leo 25 55 60
Jame 55 137 150
Leo 30 55 60
Jame 60 137 150
Tim 44 44 66
Tomas 77 77 88
Lyne 35 35 55
Tonny 66 66 99
Jame 22 137 150
Game 88 88 111I'd probably use a database for this, if there's any quantity of data involved here. Import from Excel into {SQLite, MySQL, PostgreSQL, FileMaker, maybe Core Data}, or pick your preferred key-value store, keep your data in the database, then export or (via ODBC/JDBC) then access live database data from within the spreadsheets.
Alternatively and if you're looking at small quantities of data (say, less than 10,000 entries, or less than a thousand depending on the language), then just use whatever passes for a key-value store in your preferred scripting language {Python, bash, Lua, or maybe php, AppleScript or Java} and use that. Export Excel to CSV {gag} or XML, then load that into Python and process as needed, then write out CSV {gag} or XML.
AppleScript is a scripting language for GUI applications, and also useful for processing events. If you're not doing that sort of stuff, then there can be other choices, and other choices can often have extensive frameworks and libraries for common tasks.
Sooner or later, most everybody runs into a wall when using a spreadsheet... Various folks have encountered those limits and have migrated from spreadsheets to FileMaker databases, and now use a database as the central store for their operations — and that's the other issue that can arise with spreadsheets... Where's the canonical data? -
How to adjust placement of two tables in webi depending on the rows selection
Hi,
I have a webi which has two tables. The prompts are on dates. As per requirement sometimes user selects one date or sometimes a range of dates.
When One date is selected it works fine but when multiple dates are selected tables overlap each other. I can not place them side by side.
Any idea how can I adjust?
Regards
PrashantCreate two different section for each table in the report to avoid overlapping.
For example :
Section 1 - > table 1
Section 2 -> table 2
Regards,
Pranay
Maybe you are looking for
-
Please throw me a life-line: Problem with HP Recovery Manager's File backup option
Product: Pavilion g7-1070us notebook Operating system: Window 7 64-bit Problematic system: HP Recovery Manager (triggered by hitting F11), made by "Cyberlink"? Error message: The notebook crashed a few times before but I was able to restart it. Then
-
Hello Has anyone else experienced the issue where this exit button works when IE is used to login to the ISE Guest portal, but not when Chrome is used. Same for Safari (from IPAD). Sent from Cisco Technical Support iPad App
-
Hi Experts I have scheduled the CRM_TERRMAN_PROC_REL using INITIAL run to update the territory on accounts. In between INITAL run got failed/cancelled due to error "Internal session terminated with a run time error TSV_TNEW_PAGE_ALLOC_FAILED".. I hav
-
MySQL Error - Can't fix it.
I have this error when I try to login as root (I have just installed MySQL with pacman): ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) I searched @ google and I found thousands of posts with t
-
Internet has slowed dramatically
Hi there, ive been havin problems with my net for around 3-4 days now, it was all fine and danday around wednesday / thursday time, butafter activating my skyHD the internet speed has dropped to 0.12mbps (checked by speedtest) Im not sure if the sky