AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 345589
Accepted
Daylon Hunt
Daylon Hunt
Asked: 2025-03-06 02:37:07 +0800 CST2025-03-06 02:37:07 +0800 CST 2025-03-06 02:37:07 +0800 CST

大量单独计算的瀑布结果

  • 772

我正在尝试对下面列出的 9 个单独计算进行求和,结果使用 1-9 的瀑布图。给定帐户永远不会有 9 个不同计算中的每一个的值,但它可能在多个计算桶中都有值,因此我们只想按瀑布图顺序 (1-9) 呈现值。例如,如果给定帐户在第一个 (--1-) 计算桶和最后一个 (--9-) 计算桶中都有值,那么我只想引入第一个 (--1-) 计算值。

SELECT AccountNbr, 
SUM(CurrSofrOn) AS CurrSofrOn,
SUM(CurrTlpNonStableBase) AS CurrTlpNonStableBase,
SUM(CurrTlpStableBase) AS CurrTlpStableBase,
SUM(CurrBeta) AS CurrBeta, SUM(CurrFtp) AS CurrFtp,
SUM(CurrBase) AS CurrBase, SUM(CurrStabilityAdj) AS CurrStabilityAdj,
SUM(CurrTlpAdjAge) AS CurrTlpAdjAge, SUM(CurrModeled) AS CurrModeled

FROM
(
    SELECT 
    COALESCE(l.AcctNbr_2, l.AcctNbr_1) AS AccountNbr,

    --1-
    COALESCE(l.CurrAvgBook * l.SofrOnRate_2,0) AS CurrSofrOn,   
    --2-
    COALESCE(l.CurrAvgBook * l.MovingAvgBaseRt_2,0) AS CurrBase,
    --3-
    COALESCE(l.CurrAvgBook * l.TlpNonStableBase_2,0) AS CurrTlpNonStableBase,
    --4-
    COALESCE(l.CurrAvgBook * l.TlpStableBase_2,0) AS CurrTlpStableBase,
    --5-
    COALESCE(l.CurrAvgBook * l.Beta_2,0) AS CurrBeta,
    --6-
    COALESCE(l.CurrAvgBook * l.StableAdjBal_2,0) AS CurrStabilityAdj,
    --7-
    COALESCE(l.CurrAvgBook * l.FtpRate_2,0) AS CurrFtp,
    --8-
    COALESCE(l.CurrAvgBook * l.TlpAdjAge_2,0) AS CurrTlpAdjAge,
    --9-
    COALESCE(l.CurrAvgBook * l.FtpRateModel_2,0) AS CurrModeled
FROM
(  
    SELECT 
    n1.AcctNbr AS AcctNbr_1, n2.AcctNbr AS AcctNbr_2,
    n1.TotalBookValueEoM AS PrevCurrBook,n2.TotalBookValueEoM AS CurrBook, n1.TotalBookValueAvg AS PrevAvgBook, n2.TotalBookValueAvg AS CurrAvgBook, 
    n1.FtpRate_Model AS FtpRateModel_1, n2.FtpRate_Model AS FtpRateModel_2, n1.Stable_Base AS StableBase_1, n2.Stable_Base AS StableBase_2, 
    n1.SofrOnRate AS SofrOnRate_1, n2.SofrOnRate AS SofrOnRate_2, n1.StableAdjustment_Balance AS StableAdjBal_1,n2.StableAdjustment_Balance AS StableAdjBal_2,
    n1.FtpRate_Model_Floored AS FtpRateModelFloored_1, n2.FtpRate_Model_Floored AS FtpRateModelFloored_2, n1.TlpAdjustment_Age AS TlpAdjAge_1,
    n2.TlpAdjustment_Age AS TlpAdjAge_2, n1.MovingAverageBaseRate AS MovingAvgBaseRt_1, n2.MovingAverageBaseRate AS MovingAvgBaseRt_2, 
    n1.FtpRate_Final AS FtpRate_1, n2.FtpRate_Final AS FtpRate_2, n1.Beta AS Beta_1, n2.Beta AS Beta_2, n1.TlpTermInMonths_NonStable AS TlpTermInMnthsNS_1,
    n2.TlpTermInMonths_NonStable AS TlpTermInMnthsNS_2, n1.BaseRateIndex AS BaseRateIndex_1, n2.BaseRateIndex AS BaseRateIndex_2, 
    n1.TLP_Stable_Base AS TlpStableBase_1, n2.TLP_Stable_Base AS TlpStableBase_2, n1.TLP_NonStable_Base AS TlpNonStableBase_1, n2.TLP_NonStable_Base AS TlpNonStableBase_2
        FROM
        (
            SELECT DISTINCT *  
            FROM dbo.NonMaturityDepositResults n
            WHERE n.TapeDate = 2024-11-30
        ) n1
        FULL JOIN
        (
            SELECT DISTINCT *
            FROM dbo.NonMaturityDepositResults n
            WHERE n.TapeDate = '2024-10-31'
        ) n2 
        ON n2.account_key = n1.account_key
        and n2.Channel = n1.Channel
        and n2.DepositType = n1.DepositType 
    ) l
) a
GROUP BY  a.DepositChannel,a.DepositType
sql-server
  • 1 1 个回答
  • 39 Views

1 个回答

  • Voted
  1. Best Answer
    Jonathan Fite
    2025-03-06T04:42:32+08:002025-03-06T04:42:32+08:00

    我会做类似的事情,以尽量减少对现有查询的更改。如果它确实应该是 0 而不是空,您可能需要更改条件检查以使用哪个指标,但这应该可以传达这个想法。

    SELECT AccountNbr
        ,SUM(CASE WHEN MetricToUse = 'CurrSofrOn' THEN CurrSofrOn ELSE NULL END) AS CurrSofrOn
        ,SUM(CASE WHEN MetricToUse = 'CurrTlpNonStableBase' THEN CurrTlpNonStableBase ELSE NULL END) AS CurrTlpNonStableBase
        ,SUM(CASE WHEN MetricToUse = 'CurrTlpStableBase' THEN CurrTlpStableBase ELSE NULL END ) AS CurrTlpStableBase
        ,SUM(CASE WHEN MetricToUse = 'CurrBeta' THEN CurrBeta ELSE NULL END ) AS CurrBeta
        ,SUM(CASE WHEN MetricToUse = 'CurrFtp' THEN CurrFtp ELSE NULL END ) AS CurrFtp
        ,SUM(CASE WHEN MetricToUse = 'CurrBase' THEN CurrBase ELSE NULL END ) AS CurrBase
        ,SUM(CASE WHEN MetricToUse = 'CurrStabilityAdj' THEN CurrStabilityAdj ELSE NULL END ) AS CurrStabilityAdj
        ,SUM(CASE WHEN MetricToUse = 'CurrTlpAdjAge' THEN CurrTlpAdjAge ELSE NULL END ) AS CurrTlpAdjAge
        ,SUM(CASE WHEN MetricToUse = 'CurrModeled' THEN CurrModeled ELSE NULL END ) AS CurrModeled
    FROM (
        SELECT COALESCE(l.AcctNbr_2, l.AcctNbr_1) AS AccountNbr
            ,
            --1-
            COALESCE(l.CurrAvgBook * l.SofrOnRate_2, 0) AS CurrSofrOn
            ,
            --2-
            COALESCE(l.CurrAvgBook * l.MovingAvgBaseRt_2, 0) AS CurrBase
            ,
            --3-
            COALESCE(l.CurrAvgBook * l.TlpNonStableBase_2, 0) AS CurrTlpNonStableBase
            ,
            --4-
            COALESCE(l.CurrAvgBook * l.TlpStableBase_2, 0) AS CurrTlpStableBase
            ,
            --5-
            COALESCE(l.CurrAvgBook * l.Beta_2, 0) AS CurrBeta
            ,
            --6-
            COALESCE(l.CurrAvgBook * l.StableAdjBal_2, 0) AS CurrStabilityAdj
            ,
            --7-
            COALESCE(l.CurrAvgBook * l.FtpRate_2, 0) AS CurrFtp
            ,
            --8-
            COALESCE(l.CurrAvgBook * l.TlpAdjAge_2, 0) AS CurrTlpAdjAge
            ,
            --9-
            COALESCE(l.CurrAvgBook * l.FtpRateModel_2, 0) AS CurrModeled
            , 
            --Metric To Use--
            , MetricToUse = CASE    WHEN l.SofrOnRate_2 IS NOT NULL THEN 'CurrSofrOn'
                                    WHEN l.MovingAvgBaseRt_2 IS NOT NULL THEN 'CurrBase'
                                    WHEN l.TlpNonStableBase_2 IS NOT NULL THEN 'CurrTlpNonStableBase'
                                    WHEN l.TlpStableBase_2 IS NOT NULL THEN 'CurrTlpStableBase'
                                    WHEN l.Beta_2 IS NOT NULL THEN 'CurrBeta'
                                    WHEN l.StableAdjBal_2 IS NOT NULL THEN 'CurrStabilityAdj'
                                    WHEN l.FtpRate_2 IS NOT NULL THEN 'CurrFtp'
                                    WHEN l.TlpAdjAge_2 IS NOT NULL THEN 'CurrTlpAdjAge'
                                    WHEN l.FtpRateModel_2 IS NOT NULL THEN 'CurrModeled'
                                    ELSE NULL 
                                    END
        FROM (
            SELECT n1.AcctNbr AS AcctNbr_1
                ,n2.AcctNbr AS AcctNbr_2
                ,n1.TotalBookValueEoM AS PrevCurrBook
                ,n2.TotalBookValueEoM AS CurrBook
                ,n1.TotalBookValueAvg AS PrevAvgBook
                ,n2.TotalBookValueAvg AS CurrAvgBook
                ,n1.FtpRate_Model AS FtpRateModel_1
                ,n2.FtpRate_Model AS FtpRateModel_2
                ,n1.Stable_Base AS StableBase_1
                ,n2.Stable_Base AS StableBase_2
                ,n1.SofrOnRate AS SofrOnRate_1
                ,n2.SofrOnRate AS SofrOnRate_2
                ,n1.StableAdjustment_Balance AS StableAdjBal_1
                ,n2.StableAdjustment_Balance AS StableAdjBal_2
                ,n1.FtpRate_Model_Floored AS FtpRateModelFloored_1
                ,n2.FtpRate_Model_Floored AS FtpRateModelFloored_2
                ,n1.TlpAdjustment_Age AS TlpAdjAge_1
                ,n2.TlpAdjustment_Age AS TlpAdjAge_2
                ,n1.MovingAverageBaseRate AS MovingAvgBaseRt_1
                ,n2.MovingAverageBaseRate AS MovingAvgBaseRt_2
                ,n1.FtpRate_Final AS FtpRate_1
                ,n2.FtpRate_Final AS FtpRate_2
                ,n1.Beta AS Beta_1
                ,n2.Beta AS Beta_2
                ,n1.TlpTermInMonths_NonStable AS TlpTermInMnthsNS_1
                ,n2.TlpTermInMonths_NonStable AS TlpTermInMnthsNS_2
                ,n1.BaseRateIndex AS BaseRateIndex_1
                ,n2.BaseRateIndex AS BaseRateIndex_2
                ,n1.TLP_Stable_Base AS TlpStableBase_1
                ,n2.TLP_Stable_Base AS TlpStableBase_2
                ,n1.TLP_NonStable_Base AS TlpNonStableBase_1
                ,n2.TLP_NonStable_Base AS TlpNonStableBase_2
            FROM (
                SELECT DISTINCT *
                FROM dbo.NonMaturityDepositResults n
                WHERE n.TapeDate = 2024 - 11 - 30
                ) n1
            FULL JOIN (
                SELECT DISTINCT *
                FROM dbo.NonMaturityDepositResults n
                WHERE n.TapeDate = '2024-10-31'
                ) n2 ON n2.account_key = n1.account_key
                AND n2.Channel = n1.Channel
                AND n2.DepositType = n1.DepositType
            ) l
        ) a
    GROUP BY a.DepositChannel
        ,a.DepositType
    
    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve