Ich brauche das Ergebnis gemäß Angaben in SQL Server 2008
Ich habe zwei verschiedene Tabellen von gleichen Spalten zu erhalten. Einer ist # temp1 und ein anderer ist # temp2.
Die angehängten Bilder enthalten den Datensatz für jede Tabelle.
Ich habe eine Abfrage schreiben, um die Daten zu erhalten. Hier ist die Abfrage:
SELECT distinct A.EmpID, A.DeptIdID, A.RoomID,
IN= CASE WHEN DATEDIFF(S, A.IN, B.IN) >= 0 THEN B.IN ELSE A.In END,
Out= CASE WHEN DATEDIFF(S, A.Out, B.Out) >= 0 THEN A.Out ELSE B.Out END
FROM #temp1 A
INNER JOIN #temp2 B
ON (A.In>= B.In AND A.In< B.In)
OR (A.Out> B.OutAND A.Out<= B.Out)
Was ich will, ist, die Daten von # temp1 das zu bekommen, gehört aus zwischen der In- und Out des # temp2. Die obige Abfrage funktioniert ziemlich gut für den absoluten Ein- und Ausstieg.
Betrachten Sie den Eintrag Nr. 11 von # temp1 und den Eintrag Nr. 1 und 4 von # temp2. Die Ein- und Ausgabe von # temp1 erfolgt vom 17. April bis zum 20. April, während in # temp2 zwei Einträge für diesen Datumsbereich vorhanden sind. Der eine ist vom 12. April bis 18. April und der andere vom 18. April bis zum 20. April. Daher sollte das Ergebnis von # temp1 zwei folgende Einträge enthalten.
- 17. April - 18 Apr mit RoomId = 1 aus dem Spaltenwert von # temp2.
- 18. April - 20. April mit RoomId = 2 aus dem Spaltenwert von # temp2.
und es sollte nur eindeutige Spalte für # temp1 sein.
Hier ist ein großartiger Ort zum starten. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
Ihre Beispiele sind sehr begrenzt. Was passiert zum Beispiel, wenn mehrere kleinere Bereiche innerhalb eines großen Bereichs in der anderen Tabelle liegen? Ihre Daten sollten als Text/Insert-Klauseln/in SQL Fiddle sein, wenn Ihnen jemand wirklich helfen möchte, anstatt Ihre Daten aus einem Bild zu schreiben. –
Könnte ein interessantes Problem sein, aber es ist nicht klar, was Sie erreichen wollen oder was die Daten bedeuten. Ich nehme an, dass Empid einzigartig ist. Ist der Raum eindeutig durch deptid + roomid definiert? Stellen die beiden Tabellen Räume in zwei Abteilungen deptid = 1 und 0 dar und wer hat sie gebucht und welche Buchungsdaten haben sie genutzt? Sieht so aus, als ob die JOIN-Bedingung keine Zeilen zurückgibt, wie sie sind. –