Beste tweakers,
Ik loop vast op een naar mijn idee simpel probleem.
Wij hebben op dit moment 2 tabellen in 1 database,
1 - Medewerkers
2 - Contracten
In het Medewerkers tabel staan alle medewerkers incl personeelsnummer. In contracten staan de contracten van de medewerkers + voor hoeveel % dat contract gebruikt wordt. Er kunnen dus meerdere contracten onder een medewerker hangen.
Nu ben ik bezig met het opzetten van een VIEW tabel. In deze VIEW wil ik maar 1 ROW per medewerker terug hebben. Deze ROW moet dan gevuld zijn met de contract gegevens waar de medewerker het meest bij werkt.
Nu heb ik de basis opgezet door middel van een Inner Join. Ik had gehoopt via een Group BY op het persons_id, dat ik maar 1 keer het resultaat terug zou krijgen. Echter krijg ik bij Group by de volgende foutmelding:
Wie kan helpen om mijn gewenste resultaat te krijgen?
- Group by werkt niet
- DISTINCT werkt ook niet
Het is enorm belangrijk om de goede resultaat in de VIEW te krijgen, in de tooling die aan die VIEW gekoppeld komt, is het niet mogelijk om nog op te filteren.
Ik loop vast op een naar mijn idee simpel probleem.
Wij hebben op dit moment 2 tabellen in 1 database,
1 - Medewerkers
2 - Contracten
In het Medewerkers tabel staan alle medewerkers incl personeelsnummer. In contracten staan de contracten van de medewerkers + voor hoeveel % dat contract gebruikt wordt. Er kunnen dus meerdere contracten onder een medewerker hangen.
Nu ben ik bezig met het opzetten van een VIEW tabel. In deze VIEW wil ik maar 1 ROW per medewerker terug hebben. Deze ROW moet dan gevuld zijn met de contract gegevens waar de medewerker het meest bij werkt.
Nu heb ik de basis opgezet door middel van een Inner Join. Ik had gehoopt via een Group BY op het persons_id, dat ik maar 1 keer het resultaat terug zou krijgen. Echter krijg ik bij Group by de volgende foutmelding:
De Query---------------------------
Microsoft SQL Server Management Studio
---------------------------
Column 'dbo.persons.person_id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
---------------------------
OK
---------------------------
Ik heb de Query ook al omgedraaid gehad ( dat de join in de persons kwam ipv in employments)SELECT DISTINCT
b.person_id, b.person_code, b.initials, b.first_name, b.last_name, b.last_name_prefix, b.gender, b.is_manager, a.person_id AS Expr1, a.employment_id, a.date_employed_from, a.date_employed_to,
a.hours_per_week, a.working_days, a.company_id, a.company, a.department_id, a.department, a.cost_center_id, a.cost_center, a.job_title_id, a.job_title, a.manager_person_id, a.date_last_working_day
FROM dbo.employments AS a INNER JOIN
dbo.persons AS b ON a.person_id = b.person_id
WHERE (a.date_employed_to IS NULL) OR
(a.date_employed_to >= GETDATE())
GROUP BY a.person_id
Wie kan helpen om mijn gewenste resultaat te krijgen?
- Group by werkt niet
- DISTINCT werkt ook niet
Het is enorm belangrijk om de goede resultaat in de VIEW te krijgen, in de tooling die aan die VIEW gekoppeld komt, is het niet mogelijk om nog op te filteren.