这个问题很难得到一个好的标题,但我会在下面详细解释。我将稍微简化一下这些表格,以使问题更容易提出。
我有一个名为“用户”的表,其中包含以下列:
UserRowId (PK)
FirstName
LastName
RegionRowId (FK)
Active
我有一个名为“区域”的表,其中包含以下列:
RegionRowId
RegionDesc
UserRowId
这里的逻辑是,用户属于用户表中的 RegionRowId 记录的“区域”。每个区域(在“Region”表中)都有一个区域经理,由“Region”表中的“UserRowId”列(来自“User”表的 FK)记录。
我有一个名为“UserTime”的表,其中包含以下列:
UserTimeRowId (PK)
UserRowId (FK)
Hours
Sales
这里的逻辑是用户(由 UserRowId 映射)报告存储在此表中的小时数和销售额。每次用户报告销售额/小时数时,都会创建一个新行。
我要完成的工作:
我正在尝试编写一个查询,该查询将提取该用户的 FirstName、LastName、区域经理、小时总和以及销售额总和。
这是我到目前为止所拥有的:
询问:
SELECT dbo.[User].FirstName, dbo.[User].LastName,
dbo.[Region].UserRowId AS RegManager, dbo.[Region].RegionDesc AS Desc,
SUM(dbo.[UserTime].Sales) AS Sales, SUM(dbo.[UserTime].Hours) AS Hours
FROM dbo.[UserTime]
INNER JOIN dbo.[User] ON dbo.[UserTime].UserRowid = dbo.[User].UserRowId
INNER JOIN dbo.[Region] ON dbo.[User].RegionRowId = dbo.[Region].RegionRowId
WHERE dbo.[User].Active = 1
GROUP BY dbo.[User].FirstName, dbo.[User].LastName,
dbo.[Region].UserRowId, dbo.[Region].RegionDesc
输出(示例):
FirstName LastName RegManager RegionDesc Sales Hours
Bob Man 773 NYC 500 5
我遇到的问题是:
我无法(终生)获得区域经理的姓氏(上面输出中的 RegManager 列)而不是 UserRowId。我知道在我的查询中我正在拉 dbo.[Region].UserRowId 很明显这就是我将在输出中得到的。但是,我需要使用该 ID 来交叉引用 User 表以提取该经理的名称。
当我尝试通过 UserRowId 连接用户表和区域表时,我得到一个区域经理列表而不是用户列表,以及该用户的区域经理列。
我需要一个子查询来完成这个吗?
任何帮助表示赞赏,如果我需要澄清任何事情以获得解决方案,请告诉我。
谢谢