我在使用我父亲在他的公司报告时使用的系统时遇到了问题。我没有 build 它,但我正在尽我最大的努力围绕它。它是 ASP,我不太精通它(或为此编写 sql)。
基本上,我正在使用三个表,Item、ItemHistory 和 Devices。在那些表格中,我想做的是
*见更新*
如您所见,如果设备类型包含在 ItemHistory 表中会容易得多,但事实并非如此。我试过加入表格,但不断收到错误(这是因为我相当肯定缺乏知识)。查询是按日期范围和用户(来自 ItemHistory 表),但我想我已经弄清楚了。我只是无法让它引用所有表格并将“点”加在一起。
任何帮助是极大的赞赏!如果您需要更多信息,请告诉我。先感谢您。
更新
所以基本上我现在遇到的问题是查询不断返回“BOF 或 EOF 为真,或者当前记录已被删除。请求的操作需要当前记录。”我认为这是造成的,因为它只是在点列中添加数字。
我认为我最后一个问题的问题是我让每个设备看起来都有“点”,但实际上有一定数量的设备(比如五个),并且可能有多个序列号都指向一个设备.我认为这是查询遇到麻烦的地方(但我可能是错的)。此外,我的 sql 语句看起来与下面发布的一个 littlebobbytables 非常相似,除了添加了我自己的变量。
这是数据库的样子。
项目历史表
Date | SerialNumber | DeviceType | User ----------|--------------|-------------|------- 11/1/12 | 123-456-789 | NULL | Bill 11/1/12 | 456-123-987 | NULL | Bill 11/1/12 | 987-654-321 | NULL | Bill 11/1/12 | 216-897-631 | NULL | Bill 11/1/12 | 874-547-277 | NULL | Bill
项目表
SerialNumber | DeviceType -------------|------------- 123-456-789 | Device1 456-123-987 | Device2 987-654-321 | Device3 216-897-631 | Device1 874-547-277 | Device2
设备表
Device | Points ----------|---------- Device1 | 20 Device2 | 25 Device3 | 40
我希望输出是
User | Points --------|---------- Bill | 130
最佳答案
您可以将积分相加,并按用户 ID 分组:
SELECT [User], SUM(Points) AS Points
FROM ItemHistory IH
INNER JOIN Item I ON IH.SerialNumber = I.SerialNumber
INNER JOIN Devices D ON I.DeviceType = D.Device
WHERE IH.[Date] = @YourDateVariable
GROUP BY [User]
关于sql - 无法组合 3 个不同的 SQL 表项并获得总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240833/