Mam problem z SQL-em:
Mam zapytanie:
SELECT DISTINCT
dbo.Unia.EmployeeID AS ID, dbo.Employees.EmployeeName AS [Nazwisko i Imię], dbo.UnixToDateTime(dbo.Unia.Date) AS Data,
dbo.GetDayName(dbo.Unia.Date, NULL) AS [Dzień Tygodnia], CASE WHEN [Present] = 1 AND [code] IS NULL THEN 'obecny' END AS Obecność,
dbo.LeaveTypes.code AS Nieobecność, dbo.DeptsTypes.Name AS Dział, dbo.DeptsTypes.ID AS ID_Działu, dbo.PositionTypes.Name AS Stanowisko,
dbo.PositionTypes.ID AS ID_Stanowiska
FROM dbo.Unia LEFT OUTER JOIN
dbo.Events ON dbo.Unia.EmployeeID = dbo.Events.EmployeeID AND dbo.Unia.Date = dbo.Events.Date LEFT OUTER JOIN
dbo.PositionTypes RIGHT OUTER JOIN
dbo.PositionSet ON dbo.PositionTypes.ID = dbo.PositionSet.PositionID ON dbo.Unia.EmployeeID = dbo.PositionSet.EmployeeID LEFT OUTER JOIN
dbo.DeptsSet LEFT OUTER JOIN
dbo.DeptsTypes ON dbo.DeptsSet.DeptsID = dbo.DeptsTypes.ID ON dbo.Unia.EmployeeID = dbo.DeptsSet.EmployeeID LEFT OUTER JOIN
dbo.Employees ON dbo.Unia.EmployeeID = dbo.Employees.EmployeeID LEFT OUTER JOIN
dbo.LeaveTypes RIGHT OUTER JOIN
dbo.Leave ON dbo.LeaveTypes.ID = dbo.Leave.Type ON dbo.Unia.EmployeeID = dbo.Leave.EmployeeID AND dbo.Unia.Date = dbo.Leave.Date
WHERE (dbo.Employees.EmployeeName <> ' ')
Zwraca mi wynik jak poniżej:
ID Nazwisko i Imię Data Dzień Tygodnia Obecność Nieobecność Dział ID_Działu Stanowisko ID_Stanowiska
10100033 Dąb Andrzej 2013-11-25 poniedziałek NULL UW Z8 7 Dyrektor 1
10100033 Dąb Andrzej 2013-11-25 poniedziałek obecny NULL Z8 7 Dyrektor 1
10910208 Pierz Tomasz 2013-11-25 poniedziałek obecny NULL Z8 7 NULL NULL
Chciałbym połączyć wiersz pierwszy i drugi w ten sposób że jak są takie same zdarzenia ale jedno z obecnością a drugie z nieobecnością to po złączeniu mam tylko to z z symbolem nieobecności.
Czyli powinno to wyglądać tak:
ID Nazwisko i Imię Data Dzień Tygodnia Obecność Nieobecność Dział ID_Działu Stanowisko ID_Stan
10100033 Dąb Andrzej 2013-11-25 poniedziałek NULL UW Z8 7 Dyrektor 1
10910208 Pierz Tomasz 2013-11-25 poniedziałek obecny NULL Z8 7 NULL NULL