Ben şu sonuçlargünde satırları
Date | EmployeeID
2015-11-18 | 1
2015-11-18 | 1
2015-11-18 | 1
2015-11-19 | 1
2015-11-19 | 1
2015-11-20 | 1
2015-11-20 | 1
2015-11-20 | 1
2015-11-25 | 1
Ama tarih bir dizi (2015/11/15 - 2015/11/30) verdik (hiçbir kayıt sırasında boşlukları doldurun) almak için nasıl istiyorum sadece verilerle tablodan değerleri almak tarafından bu yaklaşımı kullanarak ettik bu
Date | NbEmployees
2015-11-15 | 0
2015-11-16 | 0
2015-11-17 | 0
2015-11-18 | 3
2015-11-19 | 2
2015-11-20 | 3
2015-11-21 | 0
2015-11-22 | 0
2015-11-23 | 0
2015-11-24 | 0
2015-11-25 | 1
2015-11-26 | 0
2015-11-27 | 0
2015-11-28 | 0
2015-11-29 | 0
2015-11-30 | 0
gibi görüntülü şey
DECLARE @StartDate DATE = '2015-11-15 00:00:00', @EndDate DATE = '2015-11-30 23:59:00'
DECLARE @CurrentDate DATE = @StartDate
DECLARE @DateRange TABLE (CurrentDate DATETIME)
WHILE(@CurrentDate <= @EndDate)
BEGIN
INSERT INTO @DateRange VALUES(@CurrentDate)
SET @CurrentDate = DATEADD(DAY, 1, @CurrentDate)
END
SELECT r.CurrentDate, COUNT(EmployeeID)
FROM Employee e
RIGHT JOIN @DateRange r ON e.HireDate = r.Date
Sonuçlar:
Date | NbEmployees
2015-11-18 | 3
2015-11-19 | 2
2015-11-20 | 3
2015-11-25 | 1
Genellikle en basit yol, bir takvim tablosu (= günde 1 satır) oluşturmak ve sorgunuzla buna katılmaktır. –
Ben de öyle yaptım. Örnek koduma bak. Takvimim @DateRange –
Hangi SQL Server sürümü? – Shnugo