У меня есть запрос на выборку, который приводит таблицу со значениями, такими как:
+--------+-----------+-------------+----------------+-------------+----------------+
|SystemId|EquipmentId|ActiveStageId|ActiveStageOrder|StageStatusId|StageStatusOrder|
+--------+-----------+-------------+----------------+-------------+----------------+
| 1 | 288 | 1 | 1 | 3 | 3 |
| 1 | 355 | 1 | 1 | 7 | 6 |
| 1 | 80 | 2 | 3 | 1 | 1 |
| 1 | 288 | 4 | 2 | 1 | 1 |
| 2 | 412 | 4 | 2 | 2 | 2 |
| 2 | 54 | 2 | 3 | 4 | 5 |
+----------------------------------------------------------------------------------+
etc...
И мне нужно сгруппировать этот результат по SystemId и выбрать: SystemId , count EquipmentId , ActiveStageId для сгруппированной системы с минимальным значением ActiveStageOrder и StageStatusId для предыдущего ActiveStageId с минимальным значениемif StageStatusOrder .
Я знаю, как получить сгруппированную таблицу с агрегированными значениями min () и count () :
SELECT SystemId, COUNT(EquipmentId) as EqupmentCount,
MIN(ActiveStageOrder) as ActiveStageOrder
FROM [dbo].[Table]
GROUP BY SystemId
Но как я могу получить ActiveStageId за мин. ActiveStageOrder и StageStatusId за мин. StageStatusOrder ?Необходимо получить результат для приведенного выше примера:
+--------+-------------+-------------+-------------+
|SystemId|EqupmentCount|ActiveStageId|StageStatusId|
+--------+-------------+-------------+-------------+
| 1 | 4 | 1 | 3 |
| 2 | 2 | 4 | 1 |
+--------------------------------------------------+