J'ai deux tables:conditionnelle SQL Server comparaison
CREATE TABLE #HOURS
(DAY INTEGER,
HEURE Integer)
CREATE TABLE #PERSONS
(DAY INTEGER, HOUR INTEGER,
Name NVARCHAR(50))
GO
INSERT #HOURS VALUES (1, 5)
INSERT #HOURS VALUES (1, 6)
INSERT #HOURS VALUES (1, 8)
INSERT #HOURS VALUES (1, 10)
INSERT #HOURS VALUES (1, 14)
INSERT #HOURS VALUES (1, 15)
INSERT #HOURS VALUES (1, 16)
INSERT #HOURS VALUES (1, 17)
INSERT #HOURS VALUES (1, 18)
INSERT #PERSONS VALUES (1, 5, 'Steve')
INSERT #PERSONS VALUES (1, 6, 'Steve')
INSERT #PERSONS VALUES (1, 7, 'Steve')
INSERT #PERSONS VALUES (1, 8, 'Steve')
INSERT #PERSONS VALUES (1, 10, 'Steve')
INSERT #PERSONS VALUES (1, 14, 'Steve')
INSERT #PERSONS VALUES (1, 15, 'Steve')
INSERT #PERSONS VALUES (1, 16, 'Steve')
INSERT #PERSONS VALUES (1, 17, 'Steve')
INSERT #PERSONS VALUES (1, 10, 'Jim')
INSERT #PERSONS VALUES (1, 11, 'Jim')
INSERT #PERSONS VALUES (1, 12, 'Jim')
INSERT #PERSONS VALUES (1, 13, 'Jim')
GO
Heures montre les heures de travail et #personnes montre les personnes qui sont entrées dans le système de la base horaire. J'aimerais trouver les personnes dont les heures de travail correspondent à la table des heures. Mais il peut passer deux heures de travail.
J'ai essayé ceci:
select t.Day, sum(t.Nulls)
from
(select h.Hour, h.Day
, Case
WHEN p.Hour is null Then 1 ELSE 0 END Nulls
from #HOURS h
left join #PERSONS P on h.Hour = p.Hour AND h.Day = p.Day) t
group by t.Day
HAVING sum(t.Nulls) < 2
Mais cela ne fonctionne que lorsqu'il n'y a pas différentes personnes le même jour;)
Toutes les suggestions?
Qu'est-ce que vous essayez de trouver alors? Les personnes qui ont sauté plus de 2 heures de travail? –
J'ai révisé ma question. Je ne cherche pas les skippers. C'est une sorte de correspondance. "Faites correspondre les enregistrements" mais il y a une flexibilité que vous pouvez manquer deux enregistrements. – fkucuk