Right. Presumably there are various Insurance products, and maybe various Bank Account products? So perhaps there is a Product_Type associated with each Product.
Then you could subtype the Sales_Detail table per Product_type:
Sales_Detail_Bank_Account( Sales_Detail_ID, <bank account details> );
Sales_Detail_Insurance( Sales_Detail_ID, <insurance details> );
I know that you may have many different Insurance Product_Types, but they would presumably have quite a lot in common, e.g. Sum Insured, Start Date, End Date, ... You could perhaps have a few additional, generic columns for unantipated attributes in future products(num_value_1, etc. - not elegant, I agree!)
From what you said originally, I don't expect you like this approach. You appear to be more inclined towards a super-generic design like the often used (and detested by me!) "Entity-Attribute-Value" (EAV) design.
This allows users to specify the attributes of each Product without changing any tables, but requires many rows of data to hold one logical record, e.g.:
insert into sales_detail( sales_detail_id, att_name, att_value )
values (123, 'Account Number', '1203212');
values (123, 'Start Date', '01-JAN-2004');
values (123, 'Opening Balance', '59.99');
That way madness lies, IMHO! It also obviates use of database constraints (foreign keys, chekc constraints) to ensure data integrity.