了解更多信息可能会有所帮助。
如果您有驱动特定银行和账户实体列表的标准,那么您应该加入这些表格。
你确实有一个银行表和一个帐户表,不是吗?
假设您在帐户表中有信息可以缩小要引用的特定帐户的范围,例如假设您的帐户表有一个 IsActive char(1) NOT NULL 字段,并且您想要非活动帐户的余额,您可以编写类似这样的内容:
SELECT date, sum( amount ) AS amount
FROM Balances b
INNER JOIN Accounts a
ON b.Bank = a.Bank AND b.Account = a.Account
WHERE a.IsActive = 'N'
从设计的角度来看,您可能应该创建一个人工键来删除跨表的非标识数据的复制。这会给你这样的东西:
CREATE TABLE Accounts (
AccountId int identity(1,1) NOT NULL,
Bank nvarchar(15) NOT NULL,
Account nvarchar(15) NOT NULL
)
CREATE TABLE Balances (
AccountId int,
Date datetime,
Amount money
)
这允许编辑银行或帐户字段中的错误,而无需将这些更改级联到余额表以及稍微简单的查询。
SELECT date, sum( amount ) AS amount
FROM Balances b
INNER JOIN Accounts a
ON b.AccountId = a.AccountId
WHERE a.IsActive = 'N'