Ich habe unten Abfrage für meine Anwesenheitsbericht geschrieben. Alles funktioniert gut außer einer Sache. Ich habe mehrere Check-in/Checkout in einem Tag in meiner Anwendung erlaubt jetzt, wenn ich meine Abfrage ausführen, gibt es Check-in, Check-out, insgesamt, Check-in Kasse insgesamt. Das Ergebnis, das ich erwarte, ist etwas wie: Einchecken, Auschecken, Einchecken, Auschecken .... total.SQL Pivot Abfrage für Anwesenheitsbericht
Unten finden Sie die Abfrage:
SELECT EmployeeID, Employee, [2016-09-01],[2016-09-02],[2016-09-05],[2016-09-06],[2016-09-07],[2016-09-08],[2016-09-09] from
(
SELECT src.EmployeeID, isnull(b.EmployeeName,'') +' '+ isnull(b.LastName,'') Employee
,[CheckinDate]
, ISNULL(CAST(c.LeaveDesc as VARCHAR(max)), STUFF((
SELECT ', ' + CAST(ISNULL(CheckinTime,'') AS VARCHAR(5)) + char(10) + CAST(ISNULL(CheckoutTime,'') AS VARCHAR(5)) +
char(10) + CAST(ISNULL(TotalHours,'') AS VARCHAR(5))
FROM EmployeeDetail
WHERE (EmployeeID = src.EmployeeID and CheckinDate = src.CheckinDate)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
,1,2,'')) AS Result
FROM [EmployeeDetail] as src inner join EmployeeMaster b on src.EmployeeID = b.EmployeeID and src.KindergardenID = b.KindergardenID
left outer join leavetype c on src.leaveid = c.leaveid
WHERE src.KindergardenID = 1
GROUP BY src.EmployeeID, isnull(b.EmployeeName,'') +' '+ isnull(b.LastName,''), CheckinDate,LeaveDesc
) x
pivot
(
max(Result)
for CheckinDate in ([2016-09-01],[2016-09-02],[2016-09-05],[2016-09-06],[2016-09-07],[2016-09-08],[2016-09-09])
) p
Jede Hilfe die Abfrage zu verändern, um es als funktioniert geschätzt wird erwartet. Lassen Sie mich wissen, wenn ich beim Nachfragen verwirrend war.
Microsoft SQL Server 2012 – Anjum
Bitte, einige Daten Probe auf Input liefern, Ihre Abfrage-Ergebnisse Sie bekommen jetzt und welche Ausgabe Sie wollen tatsächlich zu bekommen. – gofr1
Können Sie Eingabe- und Ausgabeprobendaten bereitstellen? –