Apologies as I’m really new to SQL, and I’m trying to create a code that would extract all values in the same row, in their same respective identifiers (fundno and fund name).
What I want is all the values are in the same row, and not separated.
select
x
b.fundno,
a.fund_name,
a.fund_type As Type,
a.fund_status_code As Status,
a.category_code as 'CatCode',
convert(char(10),b.prosp_date,101)as 'Prospectus_date',
(case when b.prosp_code = 'GRMFEE' then b.prosp_value end) as GrMgmt,
(case when b.prosp_code = 'GR12B1' then b.prosp_value end) as Gr12b1,
(case when b.prosp_code = 'GROTHR' then b.prosp_value end) as Groth,
(case when b.prosp_code = 'GREXP' then b.prosp_value end) as Grtotal,
(case when b.prosp_code = 'NETMFEE' then b.prosp_value end) as Netmgmt,
(case when b.prosp_code = 'NET12B1' then b.prosp_value end) as Net12b1,
(case when b.prosp_code = 'NETOTHR' then b.prosp_value end) as Netoth,
(case when b.prosp_code = 'EXPLIMIT' then b.prosp_value end) as Nettotal,
(case when b.prosp_code = 'NETWVR' then b.prosp_value end) as Waiver
from
fund a,
prospectus_breakdown b
where a.category_code in(1,13,16,18,19,20,27,31)
and b.fundno = a.fundno
and b.prosp_date=(select max(prosp_date)
from prospectus_breakdown b
where b.fundno=a.fundno)
order by a.fund_name
What appears is this:
Can anyone please help me fix the code? Any kind of help would be really appreciated. Thank you!!
Advertisement
Answer
You want aggregation . . . and proper JOIN
syntax:
select f.fundno, f.fund_name, f.fund_type As Type,
f.fund_status_code As Status,
f.category_code as CatCode,
convert(char(10), pb.prosp_date, 101) as Prospectus_date,
max(case when pb.prosp_code = 'GRMFEE' then pb.prosp_value end) as GrMgmt,
max(case when pb.prosp_code = 'GR12B1' then pb.prosp_value end) as Gr12b1,
max(case when pb.prosp_code = 'GROTHR' then pb.prosp_value end) as Groth,
max(case when pb.prosp_code = 'GREXP' then pb.prosp_value end) as Grtotal,
max(case when pb.prosp_code = 'NETMFEE' then pb.prosp_value end) as Netmgmt,
max(case when pb.prosp_code = 'NET12B1' then pb.prosp_value end) as Net12b1,
max(case when pb.prosp_code = 'NETOTHR' then pb.prosp_value end) as Netoth,
max(case when pb.prosp_code = 'EXPLIMIT' then pb.prosp_value end) as Nettotal,
max(case when pb.prosp_code = 'NETWVR' then pb.prosp_value end) as Waiver
from fund f join
prospectus_breakdown pb
on f.fundno = pb.fundo
where f.category_code in (1, 13, 16, 18, 19, 20, 27, 31)
group by f.fundno, f.fund_name, f.fund_type,
f.fund_status_code, f.category_code,
convert(char(10), pb.prosp_date, 101);
Notes:
- Never use commas in the
FROM
clause. - Always use proper, explicit, standard
JOIN
syntax. - Use meaningful table aliases (abbreviations for table names), rather than arbitrary letters.
- Only use single quotes for string and date constants, not for column aliases.