sql >> Database teknologi >  >> RDS >> Sqlserver

Forsøger at få summen af ​​distinkte værdier for distinkte filer for distinkte softwareversioner

Dette burde gøre tricket:

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:For at tilføje til din forespørgsel, prøv noget som dette (din forespørgsel går over, hvor ... er):

...
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:Jeg tror, ​​at løsningen i det væsentlige er den samme, hvis du forsøger at opnå det samme:

    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'



  1. #1062 - Dublet indtastning 0' for nøglen 'PRIMARY'

  2. Er der en måde at ikke bruge firkantede parenteser i SQL Server?

  3. Effektiv måde at beregne en lighedsprocent mellem datasæt

  4. Krydstabuleringstransponeringsanmodning