添加修剪后的子串

adding trimmed substrings

使用 sql 服务器:

我有一些命令 trim 一个 txt 文件,例如:

Case when charindex('-', Substring([RawStreamOut], 179, 10)) > 0   
                then '-' + Replace(LTrim(RTRIM(Substring([RawStreamOut], 179, 9))), ',','')  else
                        LTrim(RTRIM(Substring([RawStreamOut], 179, 10))) end as [Days_Old_16_To_20],

Case when charindex('-', Substring([RawStreamOut], 196, 10)) > 0   
                then '-' + Replace(LTrim(RTRIM(Substring([RawStreamOut], 196, 9))), ',','')  else
                        LTrim(RTRIM(Substring([RawStreamOut], 196, 10))) end as [Days_Old_21_To_40]

等...

我有很多这样的。

当前输出:

我需要能够将这些命令的结果添加到名为“总计”的新列中。有没有简单的方法可以做到这一点?

你现在拥有的是:

select 
    case when charindex........as [Days_Old_16_To_20]
    ,.......
from
    (bunch of tables and joins)

相反,将您的公式交叉应用:

select
    q.*
from 
    (bunch of tables and joins)
    cross apply
    ( select
        case when charindex........as [Days_Old_16_To_20]
        ,.......
    ) as q

现在您可以在 select 中添加一个新列:

select
    q.[Days_Old_16_To_20] + q.[Days_Old_21_To_40] + .... as [Total_value]
    ,q.*
from 
    (bunch of tables and joins)
    cross apply
    ( select
        case when charindex........as [Days_Old_16_To_20]
        ,.......
    ) as q

一个简单的方法是使用 view

创建视图 SomeView as

select...
Case when charindex('-', Substring([RawStreamOut], 179, 10)) ..... end as [Days_Old_16_To_20],
Case when charindex('-', Substring([RawStreamOut], 196, 10)) ..... end as [Days_Old_21_To_40]
.
.
from <tables>

那么您的查询可以简单地是

select 
    column, 
    [Days_Old_16_To_20] + [Days_Old_21_To_40] +... as total_Value
from someView