Home » SQL & PL/SQL » SQL & PL/SQL » CONCATENATE QUERY (ORACLE, 8.1.7.0.0, WINDOWS 2007)
CONCATENATE QUERY [message #611783] |
Tue, 08 April 2014 22:07  |
kumarvk
Messages: 214 Registered: July 2004
|
Senior Member |
|
|
Dear Experts,
I am not able to run this concatenate query as it is not displaying my required result.
I want the LIC_NOs to be displayed came in for service. for example
800 SUPER WASTE MANAGEMENT PTE LTD has got 10 units
1 in Jan, 3 came in Feb, 6 in Mar. I want these lic no to be displayed in the respective months.
I am attaching my table script and rows to be inserted, concatenate function and my sql.
CREATE TABLE MSS_RETENTION
(
CUSTOMER VARCHAR2(60),
LIC_NO VARCHAR2(10),
CHS_NO VARCHAR2(25),
RO_DATE DATE
)
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCACHE
NOPARALLEL;
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('3S TRANSPORT SERVICES', 'PC2319M', 'JALLT134PC7000044', TO_DATE('03/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('3S TRANSPORT SERVICES', 'PC2420C', 'JALLT134PC7000045', TO_DATE('03/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('3S TRANSPORT SERVICES', 'PC927X', 'JALLT134PB7000013', TO_DATE('02/11/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD1390L', 'JALFVR34P77000026', TO_DATE('03/14/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD1397T', 'JALFVR34P77000013', TO_DATE('03/14/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD1416Y', 'JALFVR34P77000014', TO_DATE('02/20/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD2076M', 'JALFVR34P77000043', TO_DATE('03/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD2473A', 'JALFVR34P87000001', TO_DATE('03/05/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD3610P', 'JALCYH52S97000008', TO_DATE('03/18/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD3642Y', 'JALCYZ52S97000002', TO_DATE('02/26/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'XD8025X', 'JALCYH52TD7000088', TO_DATE('03/25/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'YM3143L', 'JALFTR33P67000010', TO_DATE('02/14/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('800 SUPER WASTE MANAGEMENT PTE LTD', 'YM3365M', 'JALFTR33P67000007', TO_DATE('01/02/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('AMERICAN INTERNATIONAL INDUSTRIES (PTE) LTD', 'XD7855Z', 'JALEXR52ED7000066', TO_DATE('01/25/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('AMERICAN INTERNATIONAL INDUSTRIES (PTE) LTD', 'YN1518Y', 'JAANPR75HA7100847', TO_DATE('03/15/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('AMERICAN INTERNATIONAL INDUSTRIES (PTE) LTD', 'YN1869J', 'JALFVR347B7000045', TO_DATE('02/08/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('AMERICAN INTERNATIONAL INDUSTRIES (PTE) LTD', 'YN3166R', 'JAANHR85EB7100147', TO_DATE('01/11/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into MSS_RETENTION
(CUSTOMER, LIC_NO, CHS_NO, RO_DATE)
Values
('AMERICAN INTERNATIONAL INDUSTRIES (PTE) LTD', 'YN3256P', 'JALFRR907B7000166', TO_DATE('01/18/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
CREATE OR REPLACE FUNCTION concatenate
(p_key_name IN VARCHAR2,
p_key_value IN VARCHAR2,
p_col_to_concat IN VARCHAR2,
p_table_name IN VARCHAR2,
p_separator IN VARCHAR2 DEFAULT '*')
RETURN VARCHAR2
AS
TYPE weak_ref_cur IS REF CURSOR;
v_string VARCHAR2 (4000);
v_separator VARCHAR2 ( 3) := NULL;
v_value VARCHAR2 (4000);
v_cur weak_ref_cur;
BEGIN
OPEN v_cur FOR
'SELECT ' || p_col_to_concat
|| ' FROM ' || p_table_name
|| ' WHERE ' || p_key_name || ' = :a'
|| ' ORDER BY :b'
USING p_key_value, p_col_to_concat;
LOOP
FETCH v_cur INTO v_value;
EXIT WHEN v_cur%NOTFOUND;
v_string := v_string || v_separator || v_value;
v_separator := p_separator;
END LOOP;
CLOSE v_cur;
RETURN v_string;
END concatenate;
SELECT customer,
COUNT (CHS_NO) NOV,
MAX (DECODE (TO_CHAR (RO_DATE, 'MON'), 'JAN', VEHs)) AS "JAN",
MAX (DECODE (TO_CHAR (RO_DATE, 'MON'), 'FEB', VEHs)) AS "FEB",
MAX (DECODE (TO_CHAR (RO_DATE, 'MON'), 'MAR', VEHs)) AS "MAR"
FROM (SELECT CUSTOMER,
LIC_NO,
CHS_NO,
RO_DATE,
concatenate ('CUSTOMER || LIC_NO',
CUSTOMER || LIC_NO,
'LIC_NO',
'MSS_RETENTION')
AS VEHs
FROM MSS_RETENTION)
GROUP BY CUSTOMER;
My output
Customer Nov Jan Feb
800 SUPER WASTE MANAGEMENT PTE LTD 10 YM3365M YM3143L*XD1416Y*XD3642Y
like this for all the months.
|
|
|
|
|
|
|
Re: CONCATENATE QUERY [message #611876 is a reply to message #611787] |
Wed, 09 April 2014 09:48   |
 |
Michel Cadot
Messages: 68757 Registered: March 2007 Location: Saint-Maur, France, https...
|
Senior Member Account Moderator |
|
|
kumarvk wrote on Wed, 09 April 2014 07:15Hi,
My required output
Customer Nov Jan
800 SUPER WASTE MANAGEMENT PTE LTD 10 YM3365M
FEB
YM3143L*XD1416Y*XD3642Y.
I need the lic no in columnwise according to Jan, Feb, Mar etc. getting the month from RO_date
Can you format your output and explain your output.
We can't even know if the first line is headers or part of the result and if it is headers which values are in which columns.
[Updated on: Wed, 09 April 2014 13:30] Report message to a moderator
|
|
|
|
|
|
|
|
|
Goto Forum:
Current Time: Mon May 05 01:31:21 CDT 2025
|