如何做多个select求和子查询

How to do multiple select sum sub-queries

这是我的第一个 post 所以如果我对 post 有任何不正确的地方,请纠正我。

我正在为钓鱼比赛创建计分程序。 我有以下 tables(我只打算列出感兴趣的列:

tblScores:

|列名|

tblAnglers:

|列名称|

tblBoats:

|列名称|

现在我要做的是为整整一周的比赛(即 5 天)创造一个分数 sheet。所以我必须对分数进行求和,并使用各自的外键对每艘船的分数求和。

这是我目前拥有的:

Select BoatName, " +
             "Sum(tblScores.Points) AS [Day 1] " +
             "from tblScores INNER JOIN tblAnglers ON tblScores.Fk_AnglerID=tblAnglers.Pk_AnglerID " +
            " INNER JOIN tblBoats ON tblAnglers.Fk_BoatID=tblBoats.Pk_BoatID "
            + " where Day=1 GROUP BY BoatName

这一天工作得很好,但我想做的是在 DataGridView 中查看此数据,其中包含每天的列,然后还有总列。

像这样:

|Boat Name|Day 1|Day 2|Day 3|Day 4|Day 5|Total|
|Example1 | 50  | 30  | 65  | 35  | 40  | 220 |
|Example2 | 40  | 50  | 70  | 35  | 30  | 225 |

我试过使用嵌套选择,但无法正常工作。我愿意听取有关如何解决这个问题的建议。

我的另一个想法是创建一个新的 table 并将每天的这些分数保存在那里(甚至在船上 table),但我觉得数据库的结构会不如数据会重复。但我可能是错的。

谢谢大家!

另外:我正在使用 Visual Studio 2013 (C#) 和 Microsoft SQL Server 2010。

试试这个:

Select
    BoatName,  
    Sum(Case When Day = 1 Then tblScores.Points Else 0 End) AS [Day1],
    Sum(Case When Day = 2 Then tblScores.Points Else 0 End) AS [Day2],
    Sum(Case When Day = 3 Then tblScores.Points Else 0 End) AS [Day3],
    Sum(Case When Day = 4 Then tblScores.Points Else 0 End) AS [Day4],
    Sum(Case When Day = 5 Then tblScores.Points Else 0 End) AS [Day5],
    Sum(tblScores.Points) As Total
From tblScores 
INNER JOIN tblAnglers ON tblScores.Fk_AnglerID=tblAnglers.Pk_AnglerID
INNER JOIN tblBoats ON tblAnglers.Fk_BoatID=tblBoats.Pk_BoatID
GROUP BY BoatName
Order By BoatName

Fiddle