MS SQL案例陈述并引用结果

时间:2013-10-09 12:11:40

标签: sql-server

对于那些使用SQL大约12年的人来说,这可能是一个非常愚蠢的问题,但是......

在我使用的会计数据库中,所有数字都存储为正数......换句话说,发票的净值存储为正数,因此信用票据的净值也是如此。 .....交易'TranType'用于区分两者(发票'Inv',信用票据'CRN'),因此,每当我必须编写使用交易数据的报表时,我总是要写一个案例陈述......

case when TranType = 'INV' then Net else NetVal *-1 end as 'Net'

...我想知道是否有任何方法可以在特定报告中创建一个我可以引用的列而无需一遍又一遍地重新键入case语句(即所以我可以参考'Net'哪个给出案例陈述的结果)?

感谢,

达伦

2 个答案:

答案 0 :(得分:2)

是的,你可以这样做。您可以在CREATE TABLEALTER TABLE

中创建这样的列
[TrueTotal]  AS (case when TranType = 'INV' then Net else NetVal *-1 end)

e.g。

CREATE TABLE [dbo].[mytable](
    [TranType] varchar(3) not null,
    Net decimal(20,2) not null,
    NetVal decimal(20,2) not null,
    [TrueTotal]  AS (case when TranType = 'INV' then Net else NetVal *-1 end)
) 

答案 1 :(得分:1)

在这种情况下,我已经找到了一个视图,因为这是一个“现成的”会计数据库,我不想干涉结构。

计算列的概念是我之前没有遇到过的。我想我会进一步调查它们,因为我认为它们对我来说非常有用。

感谢所有人。

达伦