Frage

Ich möchte Datensätze zwischen Zeitspannen abrufen. Ich habe nur diesen Snippet der Zeichenfolge, das die Zeitspanne angibt

9:00 AM - 10:00 AM

Unten ist das Tabellenschema

CREATE TABLE [dbo].[Samples](
[RID] [int] IDENTITY(1,1) NOT NULL,
[PersonName[nvarchar](20) NOT NULL,
[NOT_AVL_DATE] [datetime] NULL,
[NOT_AVL_FOR] [int] NULL
)

knapp:Rid ist der Hauptschlüssel, PersonName ist Mitarbeiter/Mitarbeiter/Techniker Name, not_avl_date ist die datetime, die der Mitarbeiter nicht beinablich sein wird, nicht_avl_for, die Zeitspanne der Mitarbeiter darstellt. 1.

Erfordernis: Angesichts der Times möchte ich, dass die Mitarbeiter, die für diese Zeit nicht Urlaub sind. Könnte jemand eine vollständige Aussage erstellen, mein Kopf wirbeln wirkt darüber nach. Danke für jede Hilfe

War es hilfreich?

Lösung 2

Oops sorry Leute, ich war auf Tour, froh, dass viele den Beitrag aktualisiert hatten. Einfach gesagt, ich würde die Zeitspanne filtern, wenn es AM / PM am vorderen Ende [Präsentationsschicht] ist, der 0,1 oder 2. dann auf der DataAccess -Ebene abgeben würde, mache ich dies nicht_avl_for <> @FrontendParameter. Daher bekomme ich die Mitarbeiter, die für den Zeitfenster verfügbar sind, um Arbeiten zu vergeben. Dies passt möglicherweise nicht zu Ihren genauen Bedürfnissen, aber meistens könnte Frontend komplexe Abfragen beantworten, wenn es anders ist

Andere Tipps

Deeptechtons, wir möchten wirklich Ihre Antwort sehen, aber da Sie sie noch nicht gepostet haben, könnte es so ist, wie es gemacht werden könnte. Dieser SQL ist für Oracle nicht SQL Server, daher müsste er übersetzt werden. In Ihrem Beitrag fehlen Details, sodass einige verwendete Annahmen wahrscheinlich ungültig sind.

with AllEmployees As 
   (select distinct PersonName from samples)
select * from AllEmployees 
minus
select PersonName from samples 
where trunc(not_avl_date) = trunc(sysdate) 
and (not_avl_for = 1
   or (not_avl_for = 2 and :timespan LIKE '%AM%')
   or (not_avl_for = 3 and :timespan LIKE '%PM%')
);

Beispieldaten:

create table samples (rid Number(3), PersonName Varchar2(20), 
   not_avl_date date, not_avl_for integer);

insert into samples values (1,'Peter',sysdate-2, 1);
insert into samples values (2,'Peter',sysdate-1, 2);
insert into samples values (3,'Paul',sysdate-1, 3);
insert into samples values (4,'Sue',sysdate, 3);
insert into samples values (5,'Bob',sysdate-2, 2);
insert into samples values (6,'Zach',sysdate+1, 1);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top