Вы действительно должны быть осторожны, чтобы не группировать поля с разными значениями.Это даст вам результат, который вы ищете, как описано.
;WITH a as(
SELECT problemrecordedbytitle,problemstatus from problemtable
WHERE problemrecordedccyy >='2011'
and problemrecordedbytitle like 'LPM%'
)
SELECT problemrecordedbytitle, 'NotClosed', COUNT(*) FROM a WHERE problemstatus <> 'Closed'
GROUP BY problemrecordedbytitle
UNION ALL
SELECT MIN(problemrecordedbytitle), 'Total', COUNT(*) FROM a
Я бы переписал это, чтобы предотвратить проблемы с группами:
declare @problemtable table (problemrecordedbytitle varchar(20), problemstatus varchar(10))
INSERT @problemtable values('LPM-AMS-EDW', 'Open')
INSERT @problemtable values('LPM-AMS-EDW','WIP')
INSERT @problemtable values('LPM-AMS-EOM','Closed')
INSERT @problemtable values('LPM-AMS-EOM','Closed')
INSERT @problemtable values('LPM-AMS-EOM','Closed')
INSERT @problemtable values('LPM-AMS-EOM','Closed')
;WITH a as(
SELECT left(problemrecordedbytitle, 3) problemrecordedbytitle,problemstatus
FROM @problemtable -- replace this tablename for your script
-- You need these lines for your script
-- WHERE problemrecordedccyy >='2011'
-- and problemrecordedbytitle like 'LPM%'
)
SELECT problemrecordedbytitle, 'NotClosed' [status], COUNT(*) count FROM a WHERE problemstatus <> 'Closed'
GROUP BY problemrecordedbytitle
UNION ALL
SELECT MIN(problemrecordedbytitle), 'Total', COUNT(*) FROM a
Результат:
problemrecordedbytitle status count
---------------------- --------- -----------
LPM NotClosed 2
LPM Total 6