Cela devrait faire l'affaire :
SELECT
Scenario_Name
, Version
, Measure
, Value
from
(
SELECT Scenario_Name, Measure, Version, SUM(Value) AS Value , 1 as ordering
FROM #TableName
GROUP BY Scenario_Name, Measure, version
UNION ALL
SELECT Scenario_Name, 'TotalPeople', Version, SUM(Value) , 2 as ordering
FROM #TableName
GROUP BY Scenario_Name, Version
) t
Order by Scenario_Name, ordering, Measure
EDIT :Pour ajouter à votre requête, essayez quelque chose comme ceci (votre requête va au-dessus de l'endroit où le ... est) :
...
UNION ALL
SELECT
( SELECT attributedata
FROM [' [email protected]+ '].table1
WHERE AttributeName = ''Scenario Name''
) AS Scenario_Name
, (
SELECT attributedata
FROM [' [email protected]+ '].table1
where AttributeName = ''Version''
) AS Version
, CAST(COUNT(*) AS float)/MAX(repnum) AS value
, 'TotalPeople' AS Measure
, GETDATE() AS DateRun
, (SELECT ' + CAST(@testid as CHAR) +') AS TestNum
FROM [' [email protected]+ '].table2
EDIT2 :Je pense que la solution est essentiellement la même si vous essayez d'accomplir la même chose :
select (cast(count(id) as float)) as Value, FinalDisposition as Measure
from TML_Casualties
where FinalDisposition = 'DOW' or FinalDisposition = 'KIA'
group by FinalDisposition
UNION ALL
select (cast(count(id) as float)) as Value, 'TotalDeaths' as Measure
from TML_Casualties
where FinalDisposition = 'DOW' or FinalDisposition = 'KIA'