1

对于已经使用 SQL 大约 12 年的人来说,这可能是一个相当愚蠢的问题,但是......

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

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

...我想知道是否有任何方法可以在特定报告中创建一个列,我可以参考它而不必一遍又一遍地重新输入案例语句(即,我可以参考给出结果的“Net”案例陈述)?

谢谢,

达伦

4

2 回答 2

2

是的,你可以这么做。您可以在CREATE TABLEor中创建这样的列ALTER TABLE

[TrueTotal]  AS (case when TranType = 'INV' then Net else NetVal *-1 end)

例如

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)
) 
于 2013-10-09T12:20:13.790 回答
1

在这种情况下,我已经进行了查看,因为这是一个“现成的”会计数据库,我不想干扰结构。

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

谢谢大家。

达伦

于 2013-10-09T16:13:06.540 回答