Detta borde göra susen:
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:För att lägga till din fråga, prova något i stil med detta (din fråga går över där ... är):
...
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:Jag tror att lösningen i princip är densamma om du försöker åstadkomma samma sak:
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'