首页 > 解决方案 > 加入选择从同一字段中获取两列,创建两个具有不同条件的字段

问题描述

我如何加入这两个选择并在一个列上获得该年每个团队的 Sum(hr) 和在不同列上获得同一年所有团队的 Sum(hr)?

select  yearID, TeamID, sum(HR) as TeamTHR
from vwPlayersBatting
group by yearID,teamID
order by yearID

select  YearID, sum(hr) as tt
from vwPlayersBatting
group by yearID
order by yearID

标签: sqlsql-server

解决方案


您将使用SUM OVER以下方式显示年度总数:

select
  yearid,
  teamid,
  sum(hr) as teamthr
  sum(sum(hr)) over (partition by yearid) as tt
from vwplayersbatting
group by yearid, teamid
order by yearid, teamid;

示例输出:

年号 | 团队ID | 团队| tt
--------+--------+---------+--------
2019 | 1 | 10 | 30
2019 | 2 | 20 | 30
2020 | 1 | 50 | 50

如果你想要这个:

年号 | teamthr (团队 1) | teamthr (团队 2) | tt
--------+------------------+------------------+---- ---
2019 | 10 | 20 | 30
2020 | 50 | 0 | 50

这不能单独使用 SQL 来完成。您需要动态 SQL(即从预先选择的数据构建最终查询)或使用您的应用程序/网站在 SQL 结果的循环中填充网格。


推荐阅读