I eine Tabelle EmpLunch wie unten haben:mehr Datensätze in einer Zeile
EmployeeId BusinessDate PunchIn Lunch1Start Lunch1End Lunch2Start Lunch2End PunchOut
101 10/12/2017 9:00 AM 1:00 PM 1:30 PM 5:00 PM
101 10/13/2017 9:00 AM 1:00 PM 1:28 PM 5:00 PM
101 10/14/2017 9:00 AM 1:00 PM 1:28 PM 3:00 PM 3:28 PM 5:00 PM
101 10/15/2017 9:00 AM 5:00 PM
I Notwendigkeit, die Daten in einer zusätzlichen Spalte Errorcode basierend auf folgende Logik zu bevölkern:
Error Code =
1 = Lunch 1 Not Taken
2 = Lunch 1 Less Than 30 Minutes
3 = Lunch 1 Started 300 Minutes Past IN Punch
4 = Lunch 2 Not Taken
5 = Lunch 2 Less Than 30 Minutes
Die resultierende Tabelle Sould wie zum Beispiel:
EmployeeId BusinessDate PunchIn Lunch1Start Lunch1End Lunch2Start Lunch2End PunchOut ErrorCode
101 10/12/2017 9:00 AM 1:00 PM 1:30 PM 5:00 PM 4
101 10/13/2017 9:00 AM 1:00 PM 1:28 PM 5:00 PM 2, 4
101 10/14/2017 9:00 AM 1:00 PM 1:28 PM 3:00 PM 3:28 PM 5:00 PM 2, 5
101 10/15/2017 9:00 AM 5:00 PM 1
ich habe einen einfachen Code wie unten geschrieben:
Select *,
CASE WHEN Lunch1Start IS NULL THEN '1'
WHEN DATEDIFF(MINUTE, Lunch1Start, Lunch1End) < 30.0 THEN '2'
WHEN DATEDIFF(MINUTE, LunchEnd1, PunchIn) < 300.0 THEN '3'
WHEN Lunch2Start IS NULL THEN '4'
WHEN DATEDIFF(MINUTE, Lunch2End, LunchI2Start) < 30.0 THEN '5'
END LunchError
From EmpLunch
Die obige Abfrage gibt nicht mehrere Datensätze in einer Zelle (wie Datensatz für 10/13 und 10/14 in der obigen Tabelle). Meine Abfrage gibt nur den ersten Wert in der Spalte aus. Bitte schlagen Sie einen Weg vor, um das Ziel zu erreichen (durch Kommas getrennte Werte in der Spalte).
Dank Gordon !! – user1326379