Ich arbeite an einer Abfrage für eine Reha-Organisation, wo Mieter (Client/Patienten) in einem Gebäude leben, wenn sie zuerst ankommen, wie sie in ihrem Fortschritt Behandlung sie bewegen sich zu einem anderen Gebäude und wie sie gegen Ende der Behandlung sind sie in einem dritten Gebäude.SQL berechnen Anzahl der Tage des Aufenthalts nach Monat, nach Benutzer, nach Standort
Für Finanzierungszwecke müssen wir wissen, wie viele Nächte ein Mieter in jedem Gebäude in jedem Monat verbrachte. Ich kann DateDiff verwenden, um die Gesamtzahl der Nächte zu erhalten, aber wie bekomme ich die Summe für jeden Kunden in jedem Monat in jedem Gebäude?
Zum Beispiel ist John Smith in Gebäude A 9/12-11/3; Umzug in Gebäude B 11/3-15; bewegt sich zu Gebäude C auf und ist immer noch da: 11/15 - heute
Welche Abfrage gibt ein Ergebnis zurück, das die Anzahl der Nächte anzeigt, die er verbrachte: Gebäude A im September, Oktober und November. Buidling B im November Gebäude C in
November haltenZwei Tabellen des Namen des Clients, den Namen Aufbau und datum einziehen und Datum
CREATE TABLE [dbo].[clients](
[ID] [nvarchar](50) NULL,
[First_Name] [nvarchar](100) NULL,
[Last_Name] [nvarchar](100) NULL
) ON [PRIMARY]
--populate w/ two records
insert into clients (ID,First_name, Last_name)
values ('A2938', 'John', 'Smith')
insert into clients (ID,First_name, Last_name)
values ('A1398', 'Mary', 'Jones')
CREATE TABLE [dbo].[Buildings](
[ID_U] [nvarchar](50) NULL,
[Move_in_Date_Building_A] [datetime] NULL,
[Move_out_Date_Building_A] [datetime] NULL,
[Move_in_Date_Building_B] [datetime] NULL,
[Move_out_Date_Building_B] [datetime] NULL,
[Move_in_Date_Building_C] [datetime] NULL,
[Move_out_Date_Building_C] [datetime] NULL,
[Building_A] [nvarchar](50) NULL,
[Building_B] [nvarchar](50) NULL,
[Building_C] [nvarchar](50) NULL
) ON [PRIMARY]
-- Populate the tables with two records
insert into buildings (ID_U,Move_in_Date_Building_A,Move_out_Date_Building_A, Move_in_Date_Building_B,
Move_out_Date_Building_B, Move_in_Date_Building_C, Building_A, Building_B, Building_C)
VALUES ('A2938','2010-9-12', '2010-11-3','2010-11-3','2010-11-15', '2010-11-15', 'Kalgan', 'Rufus','Waylon')
insert into buildings (ID_U,Move_in_Date_Building_A,Building_A)
VALUES ('A1398','2010-10-6', 'Kalgan')
Danke für Ihre Hilfe bewegen-out.
Die einzige Herausforderung, die ich mit der Normalisierung der Datenbank habe, ist, dass es nicht meine Datenbank ist. Ich werde dafür drängen. Wenn es andere Ideen gibt, wie ich mit dem fortfahren soll, was ich habe, würde ich sie gerne hören. – Stan
Ich habe eine Abfrage mit einem CTE hinzugefügt, die Ihnen den Einstieg erleichtern soll. – Lucero
Das Schöne an dieser Lösung ist, dass keine Änderung an der Datenbank erforderlich ist. Sie führen eine Abfrage aus, die diese für Sie normalisiert und dann diese Abfrage als Quelle verwendet. – Leslie