Это даст вам количество дней, в течение которых каждый сотрудник не работал.Я думаю, что они хотели бы видеть это по диапазонам дат.Вы можете конвертировать varchars в даты, используя: DATEDIFF(DAY, CONVERT(DATETIME,[DateFrom],103), CONVERT(DATETIME,[DateTo],103))
DECLARE @myTable TABLE
(
RecordId INT,
EmpID INT,
AbsCode VARCHAR(2),
DateFrom VARCHAR(12),
DateTo VARCHAR(12)
)
INSERT INTO @myTable
(
RecordId,
EmpID,
AbsCode,
DateFrom,
DateTo
)
SELECT 666542, 1511, 'AB', '09/11/2011', '10/11/2011' UNION ALL
SELECT 666986, 1511, 'AB', '11/11/2011', '11/11/2011' UNION ALL
SELECT 666996, 1511, 'EL', '13/11/2011', '17/11/2011' UNION ALL
SELECT 755485, 1787, 'SL', '01/11/2011', '14/11/2011' UNION ALL
SELECT 758545, 1787, 'SL', '15/11/2011', '26/11/2011' UNION ALL
SELECT 796956, 1954, 'AB', '09/11/2011', '09/11/2011' UNION ALL
SELECT 799656, 1367, 'AB', '09/11/2011', '09/11/2011' UNION ALL
SELECT 808845, 1527, 'EL', '16/11/2011', '16/11/2011' UNION ALL
SELECT 823323, 1527, 'EL', '17/11/2011', '17/11/2011' UNION ALL
SELECT 823669, 1527, 'EL', '18/11/2011', '18/11/2011' UNION ALL
SELECT 899555, 1123, 'AB', '09/11/2011', '09/11/2011' UNION ALL
SELECT 990990, 1511, 'AB', '12/11/2011', '12/11/2011'
SELECT [RecordId], [EmpID], [AbsCode], SUM(DAYS) NoDays
FROM
(
SELECT [RecordId], [EmpID], [AbsCode], DATEDIFF(DAY, CONVERT(DATETIME,[DateFrom],103), CONVERT(DATETIME,[DateTo],103)) Days
FROM @myTable
GROUP BY [RecordId], [EmpID], [AbsCode], DATEDIFF(DAY, CONVERT(DATETIME,[DateFrom],103), CONVERT(DATETIME,[DateTo],103))
) subQuery
GROUP BY [RecordId], [EmpID], [AbsCode]