Columns separated by commas
Oracle 10.2.0.1Windows XP
I have a table that stores the data of our customers. When I said:
Select city, city_code as CS, count (*) as the early group of customers by city, city_code:
It returns:
CITY CS TOT
---------------------------------------- -- ----------
Delhi 01 23
Bangalore 02 36
Mumbai 03 33
Hyderabad 04 8
Jaipur 00 2
Patna 00 1
Chennai 05 114
Power required:CITY CS TOT IDS
---------------------------------------- -- ---------- ----------------------
Jaipur 01 2 393,405
Patna 02 1 200
Means that if Tot for a city is between 1,5; I want to get these IDS to customer (from the customer table itself)separated by commas as above, so that I can know who are the customers, because all the
cities whose number is < = 5, there are errors in the name of the city.
Thank you.
NOT TESTED! not having do not have database access
select city,city_code,tot,substr(sys_connect_by_path(to_char(customer_id),','),2) ids
from (select c.customer_id,c.city,c.city_code,e.tot,
row_number() over (partition by c.city,c.city_code order by customer_id) the_row
from customers c,
(select city,city_code,count(*) tot
from customers
group by city,city_code
having count(*) <= 5
) e
where e.city = c.city
and e.city_code = c.city_code
)
where connect_by_isleaf = 1
start with the_row = 1
connect by prior the_row + 1 = the_row
and prior city = city
and prior city_code = city_code
and prior tot = tot
Concerning
Etbin
Tags: Database
Similar Questions
-
the list of columns separated by commas of a dictionary table table
I use the following question.
CONNECT_BY_ROOT SELECT table_name TopLevel, level,
connect_by_isleaf IS_Node_leaf,
substr (SYS_CONNECT_BY_PATH (column_name, ','), 2) column_name
Of all_tab_cols
where connect_by_isleaf = 1
and column_id < (select max (column_id) + 1 all_tab_cols
where table_name = 'Table_test')
and column_id > (select min (column_id) - all_tab_cols 1
where table_name = 'Table_test')
START WITH table_name = "Table_test."
CONNECT BY PRIOR column_id = nocycle (column_id - 1).
AND table_name = "Table_test."
The only problem with this query is that it goes into infinite loop. Can someone suggest a better solution?Why you ask all_tab_cols, I think will realize you that it will pull all tables in your database.
If you want to retrieve the name of the table and the columns (separated by commas) your schema, you must query user_tab_cols.
and here is the sql code
select table_name,ltrim(sys_Connect_by_path(column_name,','),',') column_names from (select table_name,column_name,row_number() over (partition by table_name order by column_id) rn from user_tab_cols) where connect_by_isleaf = 1 start with rn=1 connect by prior rn=rn-1 and prior table_name = table_name /
Or, you can use all_tab_cols to query a specific table by passing the name of the table and the name of the owner
PRAZY@11gR1> desc test Name ------------------------------------------- NUM NUM2 PRAZY@11gR1> select table_name,ltrim(sys_Connect_by_path(column_name,','),',') column_names from (select table_name,column_name,row_number() over (partition by table_name order by column_id) rn from all_tab_cols where owner='PRAZY' and table_name = 'TEST') where connect_by_isleaf = 1 start with rn=1 connect by prior rn=rn-1 and prior table_name = table_name / PRAZY@11gR1> / TABLE_NAME COLUMN_NAMES ------------------------------ ---------------------------------------- TEST NUM,NUM2 Elapsed: 00:00:00.01
HTH,
PrazyPublished by: Prazy on April 28, 2010 10:23
-
highest value in columns separated by commas
I have a table with data as shown below
trx_numbers trx_dates trx_ref
01616145/01616332/01616459 2014-11-13/2014-11-19/2014-11-24 2014090001 01616145/01616332/01616459 2014-11-13/2014-11-19/2014-11-24 2014120768 I need a sql to extract higher and corresponding date for each trx_ref
in the example above: 2014090001 - 2014-11-24 - 01616459
First advice would be to build something like a decent datamodel...
To solve your problem with your 'model', you could do (ORACLE 11.2):
WITH the DATA (trx_numbers, trx_dates, trx_ref)
AS (SELECT ' 01616145/01616332/01616459','2014-11-13/2014-11-19/2014-11-24',2014090001 UNION double, ALL)
SELECT ' double 01616145/01616332/01616459','2014-11-13/2014-11-19/2014-11-24',2014120768)
separator AS (SELECT trx_ref
to_number (regexp_substr(trx_numbers,'[^/]+',1,LEVEL)) AS trx_number,
, to_date (regexp_substr(trx_dates,'[^/]+',1,LEVEL), 'YYYY-MM-DD') AS trx_date
FROM THE DATA
CONNECT BY LEVEL<= (regexp_count(trx_numbers,'/')="" +="">=>
AND trx_ref = PRIOR trx_ref
AND PRIOR sys_guid() IS NOT NULL)
SELECT trx_ref
MAX (trx_date) KEEP (DENSE_RANK FIRST ORDER BY trx_date DESC) as trx_date
MAX (trx_number) KEEP (DENSE_RANK FIRST ORDER BY trx_date DESC) as trx_number
BETWEEN the separator
Trx_ref group
/
HTH
-
problem with column separated by commas
I'm running into a problem with the following table structure
CREATE TABLE «DETAILS»
(
'ID' NUMBER (22.0) NOT NULL,
VARCHAR2 (150 CHAR) 'NAME' NOT NULL,
"COVER" VARCHAR2 (150 CHAR) NOT NULL
);
Insert into EXPORT_TABLE (ID, NAME, COVER) values (252613546, 'VCONBU', ', 252612938,');
Insert into EXPORT_TABLE (ID, NAME, COVER) values (252613549, 'SPMABU', ', 252612932,');
INSERT INTO EXPORT_TABLE (ID, NAME, COVER) VALUES (252612938, 'HOSTEDTG', NULL);
Insert into EXPORT_TABLE (ID, NAME, COVER) values (252612932, 'INSTG', null);
Insert into EXPORT_TABLE (ID, NAME, COVER) values (367708813, 'ICF_1', ', 252613546,');
Insert into EXPORT_TABLE (ID, NAME, COVER) values (364413059, 'CSWSPT', ', 252613549,');
commit;
Output
ID NAME COVER 252613546 VCONBU HOSTEDTG 252613549 SPMABU INSTG 252612938 HOSTEDTG 252612932 INSTG 367708813 ICF_1 VCONBU 364413059 CSWSPT SPMABU Hello
You may want a self-join, like this:
SELECT c.id
c.name
p.name AS cover
Of export_table c
LEFT JOIN export_table p WE «,» | p.ID
|| ',' = c.lid
;
-
Display values in the columns separated by commas.
Hello world
Table 1
col1 col2 ID1 Name1 ID2 name2 ID3 Name3 Table 2
col1 col2 RQ1 1 RQ2 3, 2 rQ3 2, 3 Result table
col1 col2 RQ1 Name1 RQ2 Name2, Name3 rQ3 name2, Name3 Based on table 1 and table 2 to create a view to produce a result array.
Ideas experts!
Little things...
First of all, given in TABLE1. Col1 stores values as ID1, ID2... But the associated column in TABLE2. Col2 stores the value in the form 1, 2... Is this correct? Then, the data into TABLE2. Col2 is not the right way to store your data. TABLE2 is not standardized. And it is a very bad way to design a database.
Says you can try this solution here I Unpivot firstly the list of values in TABLE2. Col2 in lines and then enclose it with TABLE1 and finally make an aggregation of chain. It is a solution prior 11g. If you are on 11g and above, you can use functions like UNPIVOT and LISTAGG wisely.
with table1
as
(
Select "id1" col1, col2 "Name1" Union double all the
Select "id2" col1, col2 "Name2" Union double all the
Select 'id3' col1, col2 "Name3" of the double
),
Table2
as
(
Select "rq1" col1, col2 '1' of any Union double
Select "rq2" col1, col2 '3.2' of any union double
Select "rq3" col1, col2 '2.3 ' double '.
)
table2_expand
as
(
Select col1
, regexp_substr (col2, ' [^,] +', 1, level) col2
level lvl
from table2 t2
connect
by level<= length(col2)="" -="" length(replace(col2,="" ','))="" +="">=>
and col1 = col1 prior
and prior sys_guid() is not null
)
Select col1, ltrim (sys_connect_by_path (col2, ',') ',') col2
BeO
Select t2.col1, t1.col2, row_number() over NWR (partition by order of t2.col1 of t2.lvl)
FROM table1 t1
Join the t2 table2_expand
on t1.col1 = 'id ' | T2.col2
)
where connect_by_isleaf = 1
beginning
with rno = 1
connect
by rno = prior rno + 1
and col1 = col1 prior
-
Value separated by commas in a table column to get each field separtely?
Hello
I have the table that a column has values separated by commas in it. This table is populated using SQL LOADER, which is staging table.
I need to retrieve the records of these values separated by commas.
format of. CSV file is as -
A separate file of pipes.
DHCP-1-1-1. WNLB-CMTS-01-1,WNLB-CMTS-02-2|
DHCP-1-1-2. WNLB-CMTS-03-3,WNLB-CMTS-04-4,WNLB-CMTS-05-5|
DHCP-1-1-3. WNLB-CMTS-01-1.
DHCP-1-1-4. WNLB-CMTS-05-8,WNLB-CMTS-05-6,WNLB-CMTS-05-0,WNLB-CMTS-03-3|
DHCP-1-1-5 | WNLB-CMTS-02-2,WNLB-CMTS-04-4,WNLB-CMTS-05-7|
CREATE TABLE link_data (dhcp_token VARCHAR2 (30), cmts_to_add VARCHAR2 (200), cmts_to_remove VARCHAR2 (200));
insert into link_data values ('dhcp-1-1-1','wnlb-cmts-01-1,wnlb-cmts-02-2',null);
insert into link_data values ('dhcp-1-1-2','wnlb-cmts-03-3,wnlb-cmts-04-4,wnlb-cmts-05-5',null);
insert into link_data values ('dhcp-1-1-3','wnlb-cmts-01-1',null);
insert into link_data values ('dhcp-1-1-4','wnlb-cmts-05-8,wnlb-cmts-05-6,wnlb-cmts-05-0,wnlb-cmts-03-3',null);
insert into link_data values ('dhcp-1-1-5','wnlb-cmts-02-2,wnlb-cmts-04-4,wnlb-cmts-05-7',null);
Here the cmts_to_add column has comma separted
I need values such as -.
> for wnlb-cmts-01-1,wnlb-cmts-02-2 > > wnlb-CMTS-01-1
> > wnlb-CMTS-02-2
> for wnlb-cmts-03-3,wnlb-cmts-04-4,wnlb-cmts-05-5 > > wnlb-CMTS-03-3
> > wnlb-CMTS-04-4
> > wnlb-CMTS-05-5
And so on...
I do this because it's the staging table and I load data into the main tables using this table.
This second field contain different values as the simple comma-delimited string.
I need to write a PLSQL block to insert into the main table after checking as if dhcp-1-1-1 and wnlb-CMTS-01-1 is present in the main table so not to introduce other insert a new record.
To meet this requirement, I need to get the distinct value of the cmts_to_add column to insert into DB.
the value will be inserted as dhcp-1-1-1_TO_wnlb-cmts-01-1 and dhcp-1-1-1_TO_wnlb-cmts-02-2 for the first row of the array of link_data.
The process will also be same for the rest of the lines.
I use the function substrt and instr for this problem, but its does not work.
declare
cursor c_link is select * from link_data.
l_rec_link link_data % rowtype;
l_dhcp varchar2 (30);
l_cmts varchar2 (20000);
l_cmts_1 varchar2 (32000);
Start
Open c_link;
loop
extract the c_link in l_rec_link;
l_cmts: = l_rec_link.cmts_to_add;
loop
l_cmts_1: = substr (l_cmts, 1, instr(l_cmts,',')-1);
dbms_output.put_line (l_cmts_1);
end loop;
dbms_output.put_line(l_dhcp||) e '|| l_cmts);
When the output c_link % notfound;
end loop;
exception
while others then
Dbms_output.put_line ('ERROR' |) SQLERRM);
end;
Its a peusdo code I write, but it also gives me the wrong answer it gives me error ORA-20000: ORU-10027: buffer overflow, limit of 20000 bytes
I am using-
Oracle Database 11 g Enterprise Edition Release 11.2.0.1.0 - 64 bit Production
Please tell me if my problem isn't clear!
Hello
little 'trick': Add a comma at the end of the chain... So it's easier to deal with the fact that there are zero, one, or N components...
CREATE TABLE link_data (dhcp_token VARCHAR2 (30), cmts_to_add VARCHAR2 (200), cmts_to_remove VARCHAR2 (200));
insert into link_data values ('dhcp-1-1-1','wnlb-cmts-01-1,wnlb-cmts-02-2',null);
insert into link_data values ('dhcp-1-1-2','wnlb-cmts-03-3,wnlb-cmts-04-4,wnlb-cmts-05-5',null);
insert into link_data values ('dhcp-1-1-3','wnlb-cmts-01-1',null);
insert into link_data values ('dhcp-1-1-4','wnlb-cmts-05-8,wnlb-cmts-05-6,wnlb-cmts-05-0,wnlb-cmts-03-3',null);
insert into link_data values ('dhcp-1-1-5','wnlb-cmts-02-2,wnlb-cmts-04-4,wnlb-cmts-05-7',null);
COMMIT;SET SERVEROUT ON
DECLARE
l_cmts VARCHAR2 (200 CHAR);
l_cmts_1 VARCHAR2 (200 CHAR);
BEGIN
FOR r IN (SELECT dhcp_token, cmts_to_add |) ',' cmts
OF link_data
)
LOOP
l_cmts: = r.cmts;
l_cmts_1: = SUBSTR (l_cmts, 1, INSTR (l_cmts, ",") - 1);
While l_cmts_1 IS NOT NULL
LOOP
DBMS_OUTPUT. Put_line (r.dhcp_token |) '|' || l_cmts_1);
l_cmts: = SUBSTR (l_cmts, INSTR (l_cmts, ",") + 1);
l_cmts_1: = SUBSTR (l_cmts, 1, INSTR (l_cmts, ",") - 1);
END LOOP;
END LOOP;
END;
/
DHCP-1-1-1. WNLB-CMTS-01-1
DHCP-1-1-1. WNLB-CMTS-02-2
DHCP-1-1-2. WNLB-CMTS-03-3
DHCP-1-1-2. WNLB-CMTS-04-4
DHCP-1-1-2. WNLB-CMTS-05-5
DHCP-1-1-3. WNLB-CMTS-01-1
DHCP-1-1-4. WNLB-CMTS-05-8
DHCP-1-1-4. WNLB-CMTS-05-6
DHCP-1-1-4. WNLB-CMTS-05-0
DHCP-1-1-4. WNLB-CMTS-03-3
DHCP-1-1-5 | WNLB-CMTS-02-2
DHCP-1-1-5 | WNLB-CMTS-04-4
DHCP-1-1-5 | WNLB-CMTS-05-7Best regards
Bruno Vroman.
-
Separated by commas as columns
The text below table can values separated by commas and want to divide it into parts and display them as different columns.
For example
I'm able to do with the CASE statement, but I was wondering if it can be done in a different way.
CREATE TABLE T)
ID NUMBER 4,
TEXT VARCHAR2 (100)
);
INSERT INTO T VALUES (1, 'ALL, biased');
INSERT INTO T VALUES (2, 'ALL, Zero');
INSERT INTO T VALUES (3, 'STAT, NOSTAT');
INSERT INTO T values (4, 'ONEVALUE');
SELECT id, text,
CASE WHEN INSTR (text, ',') > 0 THEN
SUBSTR (text, 1, (INSTR(text,',')-1))
ON THE OTHER
TEXT
END part_1
CASE WHEN INSTR (text, ',') > 0 THEN
SUBSTR (text, INSTR (text, ",") + 1, LENGTH (text))
ON THE OTHER
NULL VALUE
END Part_2
T;
Hello
MyOAF wrote:
The text below table can values separated by commas, and you want to divide it into parts & post them as different columns.
For example
I'm able to do with the CASE statement, but I was wondering if it can be done in a different way.
CREATE TABLE T)
ID NUMBER 4,
TEXT VARCHAR2 (100)
);
INSERT INTO T VALUES (1, 'ALL, biased');
INSERT INTO T VALUES (2, 'ALL, Zero');
INSERT INTO T VALUES (3, 'STAT, NOSTAT');
INSERT INTO T values (4, 'ONEVALUE');
SELECT id, text,
CASE WHEN INSTR (text, ',') > 0 THEN
SUBSTR (text, 1, (INSTR(text,',')-1))
ON THE OTHER
TEXT
END part_1
CASE WHEN INSTR (text, ',') > 0 THEN
SUBSTR (text, INSTR (text, ",") + 1, LENGTH (text))
ON THE OTHER
NULL VALUE
END Part_2
T;
Here's one way:
WITH got_comma_pos AS
(
SELECT id, text
, INSTR (text |) ','
, ','
) AS comma_pos
T
)
SELECT id, text
, SUBSTR (text, 1, comma_pos - 1) AS part_1
SUBSTR (text, comma_pos + 1) AS part_2
OF got_comma_pos
ORDER BY id
;
You can also use regular expressions, but it will be slower.
-
Hello
I have 3 tables with the following structure.
create table a_os_lang_stls
(ID NUMBER )
SWB_NUMBER VARCHAR2 (30),
Pc_NUMBER VARCHAR2 (30),
PC_FLAG TANK (1),
INSTALLATION_ord NUMBER ,
SP_OR_LATER_VSN TANK (1),
Platform VARCHAR2 (4000),
OS VARCHAR2 (4000),
LANG VARCHAR2 (4000),
LOSS_OF_FUNC_REASON_TXT VARCHAR2 (4000),
CREATION_DATE DATE ,
MODIFIED_DATE DATE ,
CREATED_BY VARCHAR2 (100 BYTE),
MODIFIED_BY VARCHAR2 (100 BYTE)
);
Insert in a_os_lang_stls
values (1 'SWB1' 'SWB0','P',1 of ','11118,14,16,234,124' '12,26,17,24,35''34,28,45,67,123,95',USER, NULL, NULL, NULL, SYSDATE);
Insert in a_os_lang_stls
values (2,'SWB1' 'SWB2','P',2 of ','111,20,14,16,124''11,26,18,24,35''35,27,42,67,123,95', SYSDATE, NULL, NULL, NULL, USER);
insert into a_os_lang_stls
values (3,'SWB1','SWB3','C', 1,'','11118,14,16,234,124','12,26,17,24,35',' 35,27,42,67,123,95', SYSDATE, NULL, NULL, NULL, USER);
insert into a_os_lang_stls
values (4,'SWB1','SWB4','C', 2,'','111,20,14,16,124','11,26,18,24,35'' 34,28,45,67,123,95, SYSDATE, NULL, NULL, NULL, USER)
CREATE TABLE os_dtls
(
OSCODE VARCHAR2 (10 BYTE),
ID NUMBER DEFAULT NULL,
AG_OSCODE VARCHAR2 (250 BYTE),
);
insert into os_dtls
values ('HUX', 12, 'HP UNIX');
insert into os_dtls
values('SUX',26,'SOLARIS');
insert into os_dtls
values ('LUX', 17, 'LINUX');
CREATE TABLE lang_dtls
(
LANGCD TANK (2 BYTE),
LANGNAME VARCHAR2 (255 BYTE),
ID NUMBER DEFAULT 1 NOT NULL
);
insert into lang_dtls
values ('ENG', 'ENGLISH UK', 35);
insert into lang_dtls
values ('UEG', 'USA ENGLISH', 27);
insert into lang_dtls
values('FR','FRENCH',45);
Information on the database:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64 bit Production
PL/SQL version 11.1.0.7.0 - Production
Production base 11.1.0.7.0
AMT for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
I have to write a procedure like this
procedure os_lang_info (P_SB_NO IN varchar2, p_pcur sys_refcursor, p_ccur, sys_refcursor );
The requirement is to get the details for a given swb_no where pc_flag is P or C pass like 2 different sys_refcursor. But the value of column of bones and lang I need to map to the os_dtls and lang_dtls tables to get the ag_oscode and langname respectively for the corresponding id then through sys_refcursor.
So sys_refcursor structure will be
Open the p_pcur for
Select * from a_os_lang_stls
where swb_number = p_sb_no
and PC_FLAG = 'P' ;
so the output will resemble the following
1 , « SWB1 » , « SWB0 » , 'P' , 1 , 'S' , '11118,14,16,234,124' , «HP UNIX,SOLARIS,LINUX,... « , "UK ENGLISH,US ENGLISH,FRENCH,...» ', NULL, NULL, NULL, USER, SYSDATE
I must get the id separated by commas of column bone and lang and map to the corresponding table to get the names separated by commas of the bones and langs and pass it as a component of sys_refcursor.
Open the p_ccur for
Select * from a_os_lang_stls
where swb_number = p_sb_no
and PC_FLAG = 'C';
Could someone please help me how to convert the value separated by commas in a comma separated value new map to another table and pass it as part of the sys_refcursor.
Thanks in advance.
Kind regards
SB2011
Hello. Here are the queries for the two sys_refcursors.
(1) FOR THE FLAG = 'P '.
SELECT T1.ID,
T1. SWB_NUMBER,
T1. PC_NUMBER,
T1. PC_FLAG,
T1. INSTALLATION_ORD,
T1. SP_OR_LATER_VSN,
T1. PLATFORM,
T1. OS_CODE,
T2. LANG_CODE
DE)
SELECT T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
RTRIM (XMLAGG (XMLELEMENT(A,AG_OSCODE,',')). Extract ('//Text ()'), ',') OS_CODE
FROM (SELECT ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
(COLUMN_VALUE). GETNUMBERVAL() os_id
Of a_os_lang_stls t, xmltable (os) t1) T1.
OS_dtls T2
WHERE T2.ID = T1. OS_ID
GROUP OF T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
T1 PLATFORM),
(SELECT T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
RTRIM (XMLAGG (XMLELEMENT(A,LANGNAME,',')). Extract ('//Text ()'), ',') LANG_CODE
FROM (SELECT ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
(COLUMN_VALUE). GETNUMBERVAL() lang_id
Of a_os_lang_stls t, xmltable (lang) t1) T1.
lang_dtls T2
WHERE T2.ID = T1.lang_id
GROUP OF T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
T2 PLATFORM)
WHERE T1.ID = T2.ID
AND T1. SWB_NUMBER = T2. SWB_NUMBER
AND T1. PC_NUMBER = T2. PC_NUMBER
AND T1. INSTALLATION_ORD = T2. INSTALLATION_ORD
AND T1. PLATFORM = T2. PLATFORM
AND T1. PC_FLAG = "P";
(2) PC_FLAG FOR = 'C '.
SELECT T1.ID,
T1. SWB_NUMBER,
T1. PC_NUMBER,
T1. PC_FLAG,
T1. INSTALLATION_ORD,
T1. SP_OR_LATER_VSN,
T1. PLATFORM,
T1. OS_CODE,
T2. LANG_CODE
DE)
SELECT T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
RTRIM (XMLAGG (XMLELEMENT(A,AG_OSCODE,',')). Extract ('//Text ()'), ',') OS_CODE
FROM (SELECT ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
(COLUMN_VALUE). GETNUMBERVAL() os_id
Of a_os_lang_stls t, xmltable (os) t1) T1.
OS_dtls T2
WHERE T2.ID = T1. OS_ID
GROUP OF T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
T1 PLATFORM),
(SELECT T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
RTRIM (XMLAGG (XMLELEMENT(A,LANGNAME,',')). Extract ('//Text ()'), ',') LANG_CODE
FROM (SELECT ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
PLATFORM,
(COLUMN_VALUE). GETNUMBERVAL() lang_id
Of a_os_lang_stls t, xmltable (lang) t1) T1.
lang_dtls T2
WHERE T2.ID = T1.lang_id
GROUP OF T1.ID,
SWB_NUMBER,
PC_NUMBER,
PC_FLAG,
INSTALLATION_ORD,
SP_OR_LATER_VSN,
T2 PLATFORM)
WHERE T1.ID = T2.ID
AND T1. SWB_NUMBER = T2. SWB_NUMBER
AND T1. PC_NUMBER = T2. PC_NUMBER
AND T1. INSTALLATION_ORD = T2. INSTALLATION_ORD
AND T1. PLATFORM = T2. PLATFORM
AND T1. PC_FLAG = 'C ';
-
have a column that has values separated by commas... and I'm s
Have a column that has values separated by commas... and I'm trying to separate.
I am trying to create a stored procedure... The 11g xe version. apex .and version 4...
Here is the part of the code... I can't do a procedure. causes my intervention consist with the clause...
create or replace procedure ins_adv_invoice
(mmagazine_no number, madvtno number, missueno number, varchar2, varchar2, varchar2 msalesman_code mpagenumber msection)
is
cursor cx is with testa as
(select name of the advertiser pagenumber)
Select regexp_substr (pagenumber, ' [^,] +', 1, rownum) result
the advertiser
connect by level < = length (regexp_replace (pagenumber, ' [^,] + "")) + 1
where advt_no = madvtno;
Start
for xxx CX
loop
insert into adv_invoice (magazine_no, advtno, adissue, section, opinion, salesman_code)
values (mmagazine_no, madvtno, missueno, msection, xxx.result, msalesman_code);
end loop;
end;
But when I run the present... it creates no procedure. . I receive he following error...
LINE/COL ERROR
-------- ----------------------------------------------------
5/14 PL/SQL: statement ignored
9/69 PL/SQL: ORA-00933: SQL not correctly completed command
SQL >
Still not able to understand... If anyone can help...
Thank youChange the query to swap the last two lines:
... cursor cx is with testa as (select pagenumber name from advertiser) select regexp_substr(pagenumber, '[^,]+', 1, rownum) result from advertiser where advt_no = madvtno connect by level <= length(regexp_replace(pagenumber, '[^,]+')) + 1; ...
-
How to recover the vales separated by commas in the same column in Oracle SQL
Dear members
Please give me the solution for the below question
Oracle table
Ename product
A 1,2,3
B 1,2,3
Product column has data like this only separated by commas
Output should be like this.
Ename, product
A 1
A 2
A 3
B 1
B 2
B 3
Can we get the output above using just Oracle SQL select statement?
I tried in Google I got an answer in SQL server, there is something called "Cross apply split" function, I'm not sure in Oracle.Welcome to the forum.
Here is another interesting site, with lots of useful examples:
http://asktom.Oracle.com/pls/Apex/f?p=100:11:0:P11_QUESTION_ID:2189860818012 #2654179200346949517Also, be sure to read the SQL and PL/SQL FAQ:
http://forums.Oracle.com/forums/Ann.jspa?annID=1535 -
Select the column of values such as 1 row of values (separated by commas)
Hi all
I've got a column of values:
2062
2063
2072
2073
etc...
How to choose these values as a single line (separated by commas)?
Here is my test scenario:
select '2062' as bacc from dual union all select '2063' as bacc from dual union all select '2072' as bacc from dual union all select '2073' as bacc from dual
http://rogertroller.blogspot.com/2009/10/5-ways-to-aggregate-columns-into-comma.html
There is an option is missing... the new oracle 11g listagg function
HTH
-
SQL - Multiple Fetch in a single column with a comma separator
Hello Experts,
Good day to all...
I need your help on the following scenarios. The following query returns all channels titleID. Rather than print them one under the other as a result of the query, I want the output to be in the batch of 25 values.i.e than each line must have 25 values separated by commas. IE if there are 100 titles satisfying the output, then there should be only four lines with and each line with 25 titles in comma separated way.
I tried with the PL/SQL block; Whereas it is printing all the values permanently :(SELECT DISTINCT title_id FROM pack_relation WHERE package_id IN ( SELECT DISTINCT fa.package_id FROM annotation fa GROUP BY fa.package_id HAVING COUNT (fa.package_id) <100);
I have to stop with 25 values and display.
If its possible with SQL block alone. then it would be a great help
Thank you...DECLARE v_str VARCHAR2 (32767) := NULL; CURSOR c1 IS SELECT DISTINCT title_id FROM pack_relation WHERE package_id IN ( SELECT DISTINCT fa.package_id FROM annotation fa GROUP BY fa.package_id HAVING COUNT (fa.package_id) <100); BEGIN FOR i IN c1 LOOP v_str := v_str || ',' || i.title_id; END LOOP; v_str := SUBSTR (v_str, 2); DBMS_OUTPUT.put_line (v_str); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('Error-->' || SQLERRM); END;
You can use CEIL
Code example
SELECT nt, LTRIM(MAX(SYS_CONNECT_BY_PATH(val,',')) KEEP (DENSE_RANK LAST ORDER BY curr),',') AS concat_val FROM ( SELECT val, nt, ROW_NUMBER() OVER (PARTITION BY nt ORDER BY val) AS curr, ROW_NUMBER() OVER (PARTITION BY nt ORDER BY val) -1 AS prev FROM ( SELECT level AS val, ceil(rownum/3) as nt /* Grouped in batches of 3 */ FROM dual CONNECT BY level <= 10 ) ) GROUP BY nt CONNECT BY prev = PRIOR curr AND nt = PRIOR nt START WITH curr = 1; NT CONCAT_VAL ---------- -------------------------------------------------------------------------------- 1 1,2,3 2 4,5,6 3 7,8,9 4 10
Your code
SELECT nt, LTRIM(MAX(SYS_CONNECT_BY_PATH(title_id,',')) KEEP (DENSE_RANK LAST ORDER BY curr),',') AS concat_val FROM ( SELECT title_id, nt, ROW_NUMBER () OVER (PARTITion BY nt ORDER BY title_id) AS curr, ROW_NUMBER() OVER (PARTITION BY nt ORDER BY title_id) -1 AS prev FROM ( SELECT title_id, ceil(rownum/25) AS nt /* Grouped in batches of 25 */ FROM pack_relation tdpr JOIN annotation fa ON tdpr.package_id = fa.package_id GROUP BY title_id, fa.package_id HAVING COUNT (fa.package_id) < 500 ) ) GROUP BY nt CONNECT BY prev = PRIOR curr AND nt = PRIOR nt START WITH curr = 1;
-
Form of: separation by comma cfg file access
I need a script to idoc that read these values:
WorkflowsPattern = workflow_one, workflow_two
For single value, I used <$ # about WorkflowsPattern$ > and it works very well, what script to use for the values separated by commas.
Thank yoursMakeFromString: creates a column of a result set of a string.
Parameters:
Takes two required parameters and an optional parameter:
The first parameter is the name of the ResultSet object to create.
The second parameter is a list separated by commas of chains to analyze (for example a, b, c and d), or a variable that has a string separated by commas as its value.
The third optional parameter is the name of the column in the result set. If no value is specified, the name of default column to row.
Output: Creates a result set with a single column, populated by values from the specified string.
http://docs.Oracle.com/CD/E14571_01/doc.1111/e10726/c08_config_ref255.htm#i1111695
Jonathan
http://jonathanhult.com -
How to store the values separated by commas
Hi all
I have a table named discount, with discount_id (number data type) as one of the columns.
The user gives an entry as the value separated by commas, (ex: '123,27890,3543')
I use built-in proc that separates the values separated by commas.
Result set is stored in a table.DECLARE l_input VARCHAR2 (4000) := '123,27890,3543'; l_count BINARY_INTEGER; l_array DBMS_UTILITY.lname_array; BEGIN DBMS_UTILITY.comma_to_table ( list => REGEXP_REPLACE (l_input, '(^|,)', '\1x'), tablen => l_count, tab => l_array); DBMS_OUTPUT.put_line (l_count); FOR i IN 1 .. l_count LOOP DBMS_OUTPUT.put_line ( 'Element ' || TO_CHAR (i) || ' of array contains: ' || SUBSTR (l_array (i), 2)); END LOOP; END; Result: 3 Element 1 of array contains: 123 Element 2 of array contains: 27890 Element 3 of array contains: 3543
I would like to do a select on the table of discounts
Select * discount where discount_id (123, 27890 3543).
I am looking for options,
I need to create a new physical table as
Create table new_table (identification number) and bulk insert in this table.
Select * discount where discount_id in (select distinct id of new_table).
or
Is there a better way?
THX
Rod.Hello, SamFisher.
May be the recursive subquery factoring help you?WITH test(f1, n) AS (select '12, 15, 235', 1 from dual UNION all select f1, n + 1 from test where n < regexp_count('12, 15, 235', ',') + 1) SELECT regexp_substr(f1, '[^, ]+', 1, n) f FROM test
-
Print data with Format separated by commas.
Hello
I need to establish a rapport with the values in column format, separated by commas. I use > > express edition of oracle 11g
Table used names and customer number, he participated in the interview, it is stored in the format below.
my requirement for the report is shown belowemp_name client_name
JAMES HAS
JAMES B
JAMES C
ALEX HAS
ALEX D
SCOTT B
SCOTT C
please advise me is there any function that converts and print format separated by commas.emp_name count (client_name) client_name
JAMES 3 A, B, C
ALEX 2A, D
2 B, C SCOTT
Thank you
SudhirTry this...
/ * code deleted after suggested by BluShadow * /.
I'll post other methods of String-aggregation...
Try this...select emp_name, count(client_name) cnt, rtrim(XMLAGG(xmlelement(e, client_name||',')).extract('//text()'),',') from xx group by emp_name order by cnt desc;
For versions > 11g Release 2
select emp_name, count(*) cnt, LISTAGG(client_name,',') WITHIN GROUP(ORDER BY NULL) from xx group by emp_name;
Published by: Vanessa B on 7 December 2012 18:50
-adding code
Maybe you are looking for
-
Qosmio F20 does not turn on.
Hi, I have a Qosmio F20 which now has desided not to power up.When I plug in the adapter I have the Green AC power led and battery led lights.However when I press the button START the Green battery LED turns off and that Orange green AC Power going t
-
Satellite L40 - 17U does not illuminate
Hello world! I have a problem with my Toshiba Satellite L40 - 17U.It lights without a battery. Laptop works for several minutes with the battery, then turns off. Can it work without the battery? If it is possible, then, what can be the problem? Thank
-
I am adding a hard drive to a desktop computer (Pavilion a6857c) and need to know the size maximum (GB) and SATA (Type 3?). I use Windows 7.
-
I'm at my wits end, HELP ME! I was typing an email that has been of about 200 words I hit the space bar and grabbed the next word and looked up the eyes and my email everything was gone! This happened to me several times and I can't ever find anywher
-
How to fix the C++ runtime library error
Why do I have this error on some of my games, I have installed something new that I did a recent format and only installed my games after that if someone could help it woul make my day