Hallo,
ich habe ein SSAS Projekt (SQL Server 2008R2)
Ich habe Mitarbeiter, eine Gruppierung dieser Mitarbeiter und eine n-m Tabelle für die Zuordnung der Mitarbeiter zu der Gruppierung.
Zusätzlich habe ich eine Faktentabelle mit Arbeitszeiten.
Tabelle Mitarbeiter
IDMitarbeiter, MitarbeiterName
Tabelle Gruppierung
IDGruppierung, Gruppenname, IdParent
Tabelle Zuordnung
IdGruppierung, IdMitarbeiter
Tabelle Stundensatz
IDStundensatz, IdMitarbeiter, Arbeitszeit
Nun will ich auswerten können, welche Gruppen von Mitarbeitern wieviel Arbeitszeit für etwas verbraucht haben.
Ein Mitarbeiter kann in verschiedenen Gruppen vorhanden sein.
Je Gruppe sollen alle Mitarbeiter berechnet werden. Wenn jedoch ein Mitarbeiter in verschiedenen Gruppen vorhanden ist, soll in der entsprechenden Obergruppe dieser Mitarbeiter nur einmal berechnet werden.
Ich will eine Hierarchie, in der ich die Gruppen bis zum Mitarbeiter erweitern kann. Je Gruppe und je Mitarbeiter soll die entsprechende Arbeitszeit angezeigt werden.
Ich habe es schon hinbekommen, dass ich die Gruppen anzeigen kann.
Ich habe es auch schon hinbekommen, dass ich die Mitarbeiter anzeigen kann.
Jedoch habe ich leider noch keine Lösung, dass ich die Gruppen UND die Mitarbeiter in einer Hierarchie (einer Dimension) angezeigt bekomme.
Hat jemand einen Ansatz dafür?
Thomas
Anbei das SQL Server Script
USE M2MDB;
GO
CREATE TABLE Mitarbeiter
(
IDMitarbeiter int PRIMARY KEY,
MitarbeiterName varchar(50),
);
GO
CREATE TABLE Gruppierung
(
IDGruppierung int PRIMARY KEY,
Gruppenname varchar(50),
IdParent int,
);
GO
CREATE TABLE Zuordnung
(
IdGruppierung int,
IdMitarbeiter int,
CONSTRAINT Zuordnung_pk PRIMARY KEY (IdGruppierung, IdMitarbeiter),
CONSTRAINT FK_Mitarbeiter
FOREIGN KEY (IDMitarbeiter) REFERENCES Mitarbeiter (IDMitarbeiter),
CONSTRAINT FK_Zuordnung
FOREIGN KEY (IdGruppierung) REFERENCES Gruppierung (IdGruppierung),
);
GO
CREATE TABLE Stundensatz
(
IDStundensatz int PRIMARY KEY,
IdMitarbeiter int,
Arbeitszeit int,
CONSTRAINT FK_Stundensatz
FOREIGN KEY (IDMitarbeiter) REFERENCES Mitarbeiter (IDMitarbeiter),
);
GO
INSERT INTO dbo.Mitarbeiter
VALUES ('1', 'Meier'), ('2', 'Müller'), ('3', 'Huber');
GO
INSERT INTO dbo.Gruppierung
VALUES ('1', 'Obergruppe','0'), ('2', 'Untergruppe1','1'), ('3', 'Untergruppe2','1');
GO
INSERT INTO dbo.Zuordnung
VALUES ('2', '1'), ('2', '2'), ('3', '1'), ('3', '3');
GO
INSERT INTO dbo.Stundensatz
VALUES ('1', '1','10'), ('2', '2','20'), ('3', '3','30') ,('4', '1','100'), ('5', '2','200'), ('6', '3','300');
GO