我在MVC5 C#中有一个应用程序.我想添加一个功能,管理员可以看到每个停车场有多少个停车位,以及目前有多少车位可用.
比方说,我有两张桌子(地段和员工).
"停车场"表是现有停车场的名称以及每个停车场的车位数:
Name | Count
A | 200
B | 450
C | 375
"Staff"表包含每个人的ID,以及每个批次的int列.这些列为1(员工分配给该批次)或0(员工未分配给该批次)
StaffID | LotA | Lot B | Lot C
7264 | 0 | 1 | 0
2266 | 0 | 0 | 1
3344 | 1 | 0 | 0
4444 | 0 | 1 | 0
在上述场景中,所需的输出将是.
Lot | Total | Used | Vacant
A | 200 | 1 | 199
B | 450 | 2 | 448
C | 375 | 1 | 374
在过go ,我只做过简单的连接,我正在努力弄清楚使用COUNT和Where column=1还是Sum是最好的.但我也被这群人噎住了,迷路了.
我try 过以下类似的变化(没有成功)
SELECT Lots.Name,
Lots.Count,
SUM(Staff.LotA) As A_Occupied,
SUM(Staff.LotB) as B_Occupied,
SUM(Staff.LotC) as C_Occupied
FROM Lots
CROSS JOIN Staff
GROUP BY Lots.Name
理论上,我希望这会产生一个地块列表,每个地块中有多少个空间,每个地块中有多少个被占用,按地块名称分组.
这会在Group By中生成一个错误,因为我 Select 的列不包括在Group By中,但这会让我更加困惑如何根据自己的需要进行分组.
总的来说,我有一个坏习惯,试图把事情复杂化,所以我提前道歉.我不是一个"受过classic 训练的程序员".我尽了最大努力组织这个问题,让它变得易懂