这是我的第一篇文章,所以如果我对帖子做错了什么,请纠正我。
我正在为钓鱼比赛创建一个得分计划。 我有以下表格(我只列出感兴趣的列:
|列名|
|列名|
|列名|
现在我要做的是创建一整周比赛的分数表,这是5天。因此,我必须对得分进行总结,并使用相应的外键来计算每艘船的得分。
这就是我目前的情况:
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 |
我尝试过使用嵌套选择,但我无法使用它。我愿意就如何解决这个问题提出建议。
另外我的另一个想法是创建一个新表并在那里保存这些分数(甚至在船表中)但我觉得数据库的结构不如数据重复那么好。但我可能是错的。
谢谢大家!
另外:我使用的是Visual Studio 2013(C#)和Microsoft SQL Server 2010。
答案 0 :(得分:0)
试试这个:
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