In our system we have a database where many tables have with a lot of columns, in some case more that 300 columns. Lets use an example - a car. We have a car table which contains 300 columns. Besides the id of the car, the rest of the columns contain data related to the car fx. the dimensions of right seat.
The question is how to we map this table into a DDD aggregate without loading all columns?
DDD says the repository loads the entire aggregate, but in most cases the customer only wants to see a small part of the aggregate. The car aggregate will also have a lot of methods calculating a variety of things and some cases the data needs to be loaded from other tables.
How do we implement this the DDD way? Domain services?
Are we barking up the wrong tree? Should we be using CQRS instead?
Please disregard the fact; the database is a mess.
It seems that your problem is that you map the aggregate and the view the user wants to see 1:1. Solely because we talk about an aggregate it's not 1:1 the view. (you said it by your own "but in most cases the customer only wants to see a small part of the aggregate").
A benefit of using CQRS (or "only" CQS) is that you can concentrate on the domain, means you can model you commands and views (e.q. query) from the user/customer perspective, disregarding you current database design.
Take a look at effective aggregate Design by Vaughn Vernon, possible it helps.