繁体   English   中英

如何从别名列中获取数据

[英]How do I get data from an alias column

我正在尝试根据别名列进行计算。

SELECT 
    Aged, NotAged, Aging
FROM
    (SELECT 
         DATEDIFF(DAY, CASE WHEN Stat = 'HOLD' THEN Created ELSE Opened END,
                      CASE WHEN Stat = 'Closed' THEN Closed ELSE GETDATE() END) AS Aged,
         DATEDIFF(DAY, CASE WHEN Aged <= 25 THEN GETDATE() AS NotAged ELSE GETDATE() END) AS Aging
     FROM 
         DM.Claim 
     INNER JOIN
         DM.LDesc ON LDescKey = LDescKey) data

如何根据别名列进行计算以获取NotAgedAging

预期输出将是 Ageed {1 2 35} NotAged {1 2} Aging {35}

如果没有样本数据和预期结果,很难确定您想要什么(聚合?),但您可以使用CROSS APPLY (VALUES来创建计算列,您甚至可以通过引用前一个列来链接它们。例如。

SELECT 
    v1.Aged,
    v1.NotAged,
    v2.Aging
FROM
    DM.Claim AS c
INNER JOIN
    DM.LDesc AS ld ON ld.LDescKey = c.LDescKey
CROSS APPLY (VALUES (
    DATEDIFF(DAY, CASE WHEN Stat = 'HOLD' THEN Created ELSE Opened END,
                  CASE WHEN Stat = 'Closed' THEN Closed ELSE GETDATE() END,
    CASE WHEN Aged <= 25 THEN GETDATE() END
) ) AS v1(Aged, NotAged)
CROSS APPLY (VALUES (
    DATEDIFF(DAY, v1.NotAged ELSE GETDATE() END, v1.Aged)
) ) AS v2(Aging);

Charlieface 建议使用 CROSS APPLY 就可以了。
另一种选择是使用 CTE(公用表表达式),因此计算(和别名)列可以在下游表达式中使用。 这是一个包含一些虚构数据的示例。

with somedata as (
    SELECT
        *
    FROM ( values
        ('HOLD', '2022-06-01', '2022-06-02', '2022-07-15'),
        ('HOLD', '2022-07-01', '2022-07-02', '2022-07-15'),
        ('Closed', '2022-06-01', '2022-06-02', '2022-07-15'),
        ('Closed', '2022-07-01', '2022-07-02', '2022-07-15')
    ) vals (Stat, Created, Opened, Closed)
)
,
precalc as (
    select
        *,
        Aged = DATEDIFF(
            DAY,
            CASE WHEN Stat = 'HOLD' THEN Created ELSE Opened END,
            CASE WHEN Stat = 'Closed' THEN Closed ELSE GETDATE() END
        )
    from somedata
)
SELECT 
    Aged,
    NotAged = case when Aged <25 then Aged end,
    Aging = case when Aged >=25 then Aged end,
    *
FROM precalc

输出 (20220721)

陈年 未老化 老化 统计 已创建 打开 关闭 陈年
50 无效的 50 抓住 44713 44714 44757 50
20 20 无效的 抓住 44743 44744 44757 20
43 无效的 43 关闭 44713 44714 44757 43
13 13 无效的 关闭 44743 44744 44757 13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM