У меня есть таблица, в которой записывается успех / неудача определенного запуска задания для каждого элемента, который он обрабатывает.
Некоторые тестовые данные и немного моего тестирования показаны ниже.
CREATE TABLE #TestData
(
ItemType VARCHAR(10),
Task VARCHAR(10),
Status INT,
BatchId INT)
INSERT INTO #TestData
SELECT 'A', 'D', 1, 5
UNION ALL
SELECT 'A', 'D', 1, 5
UNION ALL
SELECT 'A', 'D', 2, 5
UNION ALL
SELECT 'A', 'U', 1, 5
UNION ALL
SELECT 'A', 'U', 2, 5
UNION ALL
SELECT 'B', 'D', 1, 6
UNION ALL
SELECT 'B', 'D', 1, 6
UNION ALL
SELECT 'B', 'D', 2, 6
UNION ALL
SELECT 'B', 'U', 1, 6
SELECT * FROM #TestData
SELECT BatchId,
ItemType,
Task,
COUNT(CASE WHEN [status] = 1 THEN [status] ELSE 0 END) as [Success],
COUNT(CASE WHEN [status] = 2 THEN [status] ELSE 0 END) AS [Failed]
FROM #TestData
GROUP BY BatchId, ItemType, Task
ORDER BY BatchId
DROP TABLE #TestData
То, что я хотел бы видеть здесь, - это отдельная строка для каждой комбинации BatchId, ItemType и Task, а затем счетчик количества успехов и неудач.
Так что для данных, опубликованных выше, я бы ожидал увидеть;
Batch ItemType Task Success Failed
5 A D 2 1
5 A U 1 1
6 B D 2 1
6 B U 1 0
Могу ли я сделать это без необходимости сводной таблицы? Любая помощь очень ценится.