我有一个表,像这样几个帐户字段:

MAIN_ACCT
GROUP_ACCT
SUB_ACCT

我经常需要他们这样的组合:

SELECT MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT
FROM ACCOUNT_TABLE

我想计算字段自动这样做,所以我可以只说:

SELECT ACCT_NUMBER FROM ACCOUNT_TABLE

什么是做到这一点的最好方法是什么?

我使用的是SQL Server 2005中。

有帮助吗?

解决方案

ALTER TABLE ACCOUNT_TABLE 
ADD ACCT_NUMBER AS MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT PERSISTED

这将持续计算的列并且如果您有大量的记录(比视图或UDF计算在选择更好的表现,一旦INTIAL创建列的发生,可以是非常慢的,并且在可能要发生低使用时间)。它会减慢插入和更新。通常我找到一个缓慢的插入或更新,除非你锁定问题由用户比在选择延迟容忍更好。

这样做,这将取决于你使用什么样的表现,你需要一个很大的最好的方法。如果你没有很多的记录,或者如果计算列将不被频繁调用,你可能不希望一个持久列,但如果经常运行与当年的所有记录或其他大型成套的报告数据,你会发现坚持计算列对你的作品好。如同任何这种性质的任务,只有这样,才能知道什么是最适合你的情况进行测试。

其他提示

这是一个视图中最佳候选。

CREATE VIEW vwACCOUNT_TABLE
AS

SELECT MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT AS ACCT_NUMBER 
FROM ACCOUNT_TABLE

GO

--now select from the View
SELECT ACCT_NUMBER FROM  vwACCOUNT_TABLE
ALTER TABLE ACCOUNT_TABLE ADD ACCT_NUMBER AS MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT;

该列表中没有持续存在,将在最CLY你引用它每次被重新创建。您可以通过实现使用视图相同的结果。如果您使用计算列筛选谓词或排序,并想添加一个索引就可以看到的计算列中创建索引的。

那么,你可以创建ACCOUNT_TABLE的观点和查询这一点。或者,我相信你可以创建一个用户定义的函数,将完成同样的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top