Суммируйте столбец, если в SQL Server указан другой столбец - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть таблица с именем, счетом и флагом:

Name    Score    Flag
----------------------
Fred    10       true
Fred    10       false
Bob     10       false

Я пытаюсь сгруппировать по имени, и в двух столбцах получить сумму баллов и суммуиз оценки только тогда, когда флаг является истинным, например:

Name    Score    FlagTrueScore
------------------------------
Fred    20       10
Bob     10       0

Я нашел способ сделать это, создав две временные таблицы, одну с оценкой и одну с flagtruescore, а затем присоединившись к ним.Но мне интересно, есть ли более простой, изящный или более рекомендуемый способ, может быть, с оконной функцией или чем-то в этом роде?

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Вы можете использовать case сумму.Попробуйте, например:

Select Name, Sum(Score), SUM(CASE When Flag Then Score Else 0 End ) as FlagTrueScore    
from myTable group by Name
1 голос
/ 23 сентября 2019

Вы можете попробовать ниже -

select name, sum(score) score,
max(case when flag=true then score end) FlagTrueScore
from tablename
group by name
...