Ich habe eine Tabelle @EmplTable
, die vier Zeilen hat. Es ist der Name von vier Angestellten. Dann habe ich eine Tabelle @MonitorTable
, die die Arbeit dieser Mitarbeiter überwacht.Abrufen, wie viele Gruppen alle Werte der Spalte als null festgelegt haben?
Angenommen, dass nichts am Tisch gelandet ist, werden @MonitorTable
12 Zeilen haben, die den drei Wochen entsprechen, in denen diese vier Mitarbeiter arbeiten werden. Die Spalte ist für alles null, was bedeutet, dass nichts zugewiesen wurde.
des IsProcessed
Lassen Sie sagen, auf true gesetzt ist für EmpId
3 von WeekNum
1, wie kann ich, wie viele Gruppen von WeekNum
bestimmen haben alle vier Reihen null? In diesem Fall wäre das Ergebnis 2 (3), da WeekNum
1 eine Zeile mit IsProcessed
auf true gesetzt hat.
Ich bin das Skript enthalten. Jede Hilfe wird geschätzt.
Danke.
declare @EmplTable table
(
EmpId INT IDENTITY NOT NULL PRIMARY KEY,
Name varchar(20)
)
insert into @EmplTable (Name) select 'John'
insert into @EmplTable (Name) select 'Mary'
insert into @EmplTable (Name) select 'Ron'
insert into @EmplTable (Name) select 'Bob'
declare @count int
select @count = count(*) from @EmplTable
declare @MonitorTable table
(
EmpId int,
WeekNum int,
IsProcessed bit
)
insert into @MonitorTable (EmpId, WeekNum) select 1, 1
insert into @MonitorTable (EmpId, WeekNum) select 2, 1
insert into @MonitorTable (EmpId, WeekNum) select 3, 1
insert into @MonitorTable (EmpId, WeekNum) select 4, 1
insert into @MonitorTable (EmpId, WeekNum) select 1, 2
insert into @MonitorTable (EmpId, WeekNum) select 2, 2
insert into @MonitorTable (EmpId, WeekNum) select 3, 2
insert into @MonitorTable (EmpId, WeekNum) select 4, 2
insert into @MonitorTable (EmpId, WeekNum) select 1, 3
insert into @MonitorTable (EmpId, WeekNum) select 2, 3
insert into @MonitorTable (EmpId, WeekNum) select 3, 3
insert into @MonitorTable (EmpId, WeekNum) select 4, 3
update @MonitorTable set IsProcessed = 1 where EmpId = 1 and WeekNum = 1
SELECT WeekNum
FROM @MonitorTable
GROUP BY WeekNum
HAVING COUNT(CASE WHEN IsProcessed = 1 THEN 0
ELSE 1
END) = @count
-- Should return 2, 3 since WeekNum has been updated. It returns 1, 2, 3.
Monitor-Tabellendaten müssen nicht mit Ihrem isprocessed Bit wird passend, weitere könnten Sie einige Beispiel post-Ergebnisse mit den erwarteten Ausgang – TheGameiswar
Ich bin nicht sicher was du meinst. Aber ich habe eine Änderung an der Abfrage vorgenommen und das Ergebnis, das ich bekommen sollte. – rbhat
@rbhatup ändern 'COUNT (CASE' zu' SUM (CASE' – JamieD77