0

我正在尝试创建一种“摘要”视图,其中应该从几个不同的表([Account]、[Branch]、[Customer]、[Employee]、[Transaction]、[FlaggedTrans])中提取值。

由于我无法在视图中执行大量 SELECT 语句,因此我正在尝试使用 INNER JOIN 完成任务,这就是我的问题所在。

这是我到目前为止所得到的:

CREATE VIEW Summary
AS
    SELECT NEWID() AS Summary_Id,
    COUNT(C.Customer_Id) AS CustCount,
    COUNT(A.Account_Id) AS AcctCount,
    COUNT(T.Transaction_Id) AS TransCount,
    COUNT(B.Branch_Id) AS BranchCount,
    COUNT(E.Employee_Id) AS EmplCount,
    CAST(SUM(A.Balance) AS INT) AS BalTotal,
    COUNT(F.FlaggedTrans_Id) AS FlagCount
    FROM dbo.Account A INNER JOIN
    dbo.Customer C ON A.Customer_Id = C.Customer_Id INNER JOIN
    dbo.Employee E ON A.Employee_Id = E.Employee_Id INNER JOIN
    dbo.[Transaction] T ON A.Account_Id = T.Account_Id INNER JOIN
    dbo.FlaggedTrans F ON E.Employee_Id = F.Employee_Id CROSS JOIN
    dbo.Branch B

看起来很合乎逻辑,但它导致所有值都返回为 NULL 或 0。我做错了什么?

4

3 回答 3

0

我将从删除 CROSS JOIN 开始,如果需要,将其放在 where 子句中(例如 WHERE My_ID IN (Select ID from Branch)。

此外,您不必加入表格,而是将它们逐个选择为列作为另一个选项。这是一些伪代码:

SELECT
(SELECT COUNT(thisfield) FROM Thistable) as ThisCnt,
(SELECT COUNT(thatfield) FROM Thattable) as ThatCnt,
[etc.]
于 2010-11-11T20:52:04.070 回答
0

如果您想将视图构建为一系列选择,而这些单个选择不相关,则可以使用 UNION ALL。

于 2010-11-11T20:11:56.577 回答
0

我不太确定这里出了什么问题,但我可以建议你一个一个地关闭你的内部连接,然后运行你的选择查询,这样你就可以确定哪个内部连接导致了问题

于 2010-11-11T20:13:15.660 回答