आप अपने द्वारा पोस्ट किए गए "कच्चे" डेटा से अपना नमूना डेटा नहीं प्राप्त कर सकते हैं। मैं सबक्वेरी ORIGINALDATA में आपके नमूना डेटा से इंजीनियर कच्चे डेटा को उलट देता हूं, फिर इस समाधान के साथ आया:
WITH SAMPLEDATA (CYCLEID,GROUPID,GROUPNAME,COL1,COL2,COL3,COL4,COL5,COL6,COL7)
AS (
SELECT 1,7669,'000000261','GAS',NULL,NULL,NULL,'1',NULL,'00' FROM DUAL
UNION ALL
SELECT 2,7669,'000000261','GAS',NULL,NULL,NULL,'1',NULL,'000000261' FROM DUAL
UNION ALL
SELECT 3,7669,'000000261','GAS',NULL,NULL,NULL,'Chester',NULL,'00' FROM DUAL
UNION ALL
SELECT 4,7669,'000000261','GAS',NULL,NULL,NULL,'Chester',NULL,'000000261' FROM DUAL
UNION ALL
SELECT 5,7669,'000000261','GFG',NULL,NULL,NULL,'1',NULL,'00' FROM DUAL
UNION ALL
SELECT 6,7669,'000000261','GFG',NULL,NULL,NULL,'1',NULL,'000000261' FROM DUAL
UNION ALL
SELECT 7,7669,'000000261','GFG',NULL,NULL,NULL,'Chester',NULL,'00' FROM DUAL
UNION ALL
SELECT 8,7669,'000000261','GFG',NULL,NULL,NULL,'Chester',NULL,'000000261' FROM DUAL
UNION ALL
SELECT 9,7669,'000000261','GKE',NULL,NULL,NULL,'1',NULL,'00' FROM DUAL
UNION ALL
SELECT 10,7669,'000000261','GKE',NULL,NULL,NULL,'1',NULL,'000000261' FROM DUAL
UNION ALL
SELECT 11,7669,'000000261','GKE',NULL,NULL,NULL,'Chester',NULL,'00' FROM DUAL
UNION ALL
SELECT 12,7669,'000000261','GKE',NULL,NULL,NULL,'Chester',NULL,'000000261' FROM DUAL
)
, originaldata as (
select distinct groupid, groupname, col, val from sampledata
unpivot (val for col in (COL1 as 1,COL2 as 2,COL3 as 3,COL4 as 4,COL5 as 5,COL6 as 6,COL7 as 7))
)
select GROUPID, GROUPNAME,
case when rn = 1 and col1 is null then '*' else col1 end col1,
case when rn = 1 and col2 is null then '*' else col2 end col2,
case when rn = 1 and col3 is null then '*' else col3 end col3,
case when rn = 1 and col4 is null then '*' else col4 end col4,
case when rn = 1 and col5 is null then '*' else col5 end col5,
case when rn = 1 and col6 is null then '*' else col6 end col6,
case when rn = 1 and col7 is null then '*' else col7 end col7
from (
select o.*,
row_number() over(partition by groupid, groupname, col order by val) rn
from originaldata o
)
pivot(
max(val)
for col in (1 as COL1,2 as COL2,3 as COL3,4 as COL4,5 as COL5,6 as COL6,7 as COL7)
)
order by groupid, groupname, rn;
GROUPID GROUPNAME COL1 COL2 COL3 COL4 COL5 COL6 COL7
---------- --------- --------- --------- --------- --------- --------- --------- ---------
7669 000000261 GAS * * * 1 * 00
7669 000000261 GFG Chester 000000261
7669 000000261 GKE
सादर, स्टीव एश्टन