2016-11-11 3 views
0

Ich habe zwei Tabelle eins ist Client-Team und eine andere ist CHeader, wenn ich einen Datensatz im Client-Team gebe ich Daten in CHeader (mit Art-Spalte-Daten als "Ini-Test") innerhalb von 7 Tagen. Wenn die 7 Tage verstrichen sind und die Cheader-Daten für diesen Client nicht gesammelt werden, sollte es möglich sein, diese Ergebnisse in der Abfrageausgabe zu erhalten. Hinweis: Nur Kind mit 'Ini Test' ist gültige Daten für diesen Fall. Folgendes ist die Abfrage.Sql Server Wählen Sie Zeilen aus einer Tabelle, wenn kein Datum in einer anderen Tabelle innerhalb des Datumsbereichs

  CREATE TABLE [dbo].[ClientTeam](
     [ClientTeamID] [int] IDENTITY(1,1) NOT NULL, 
     [TeamID] [int] NOT NULL, 
     [ClientID] [int] NOT NULL, 
     [Startdate] [smalldatetime] NOT NULL, 
     CONSTRAINT [PK15] PRIMARY KEY NONCLUSTERED 
     (
     [ClientTeamID] ASC 
     )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] 
     ) ON [PRIMARY] 

     GO 

     insert into [ClientTeam] ([TeamID],[ClientID],[Startdate]) values(123,1, GETDATE()) 
     insert into [ClientTeam] ([TeamID],[ClientID],[Startdate]) values(12,23, DATEdiff(day,2,GETDATE())) 
     insert into [ClientTeam] ([TeamID],[ClientID],[Startdate]) values(12,25, DATEdiff(day,3,GETDATE())) 


     CREATE TABLE [dbo].[CHeader](
     [CHID] [int] IDENTITY(1,1) NOT NULL, 
     [ClientID] [int] NOT NULL, 
     [TeamID] [int] NOT NULL, 
     [CreateDate] [datetime] NOT NULL, 
     [Kind] [varchar](80) NOT NULL, 
     CONSTRAINT [PK22] PRIMARY KEY NONCLUSTERED 
     (
     [CHID] ASC 
     )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] 
     ) ON [PRIMARY] 

     GO 



     insert into [CHeader] ([ClientID],[TeamID],[CreateDate],[Kind]) values(1,123,DATEdiff(HOUR,4,GETDATE()),'Ini Test') 
     insert into [CHeader] ([ClientID],[TeamID],[CreateDate],[Kind]) values(5,123,DATEdiff(HOUR,4,GETDATE()),'Gen Test') 
     insert into [CHeader] ([ClientID],[TeamID],[CreateDate],[Kind]) values(6,126,DATEdiff(HOUR,4,GETDATE()),'XYZ') 
     insert into [CHeader] ([ClientID],[TeamID],[CreateDate],[Kind]) values(23,126,DATEdiff(HOUR,5,GETDATE()),'XYZ') 

enter image description here

Antwort

0

Von dem, was ich verstehen kann, möchten Sie Daten aus ClientTeam nehmen und es nur auf der Grundlage der genannten Kriterien CHeader beizutreten.

Ich würde sagen, wählen Sie aus ClientTeam und Left Join auf CHeader. Sie können sich verbinden ON C.ClientID = CH.ClientID UND C.StartDate> DATEADD (TAG, -7, CH.CreateDate) UND CH.Kind = 'Ini Test'

+0

Ja, aber Ihre Antwort prüft nicht, ob die Startdatum von clientTeam +7 ist> currentdatetime. Ich sollte in der Lage sein, innerhalb von 7 Tagen nach Clienten Startdatum –

+0

die Kunden whoes Daten nicht in klinischen Header für Art "Ini Test" zu bekommen, Nun, Sie können das selbst tun, war Ihre Erklärung nicht sehr klar. Denken Sie darüber nach, die Funktion DATEADD für CreateDate zu verwenden und sie mit GETDATE() zu vergleichen. – Ryan

Verwandte Themen