如何为以下查询使用 case 表达式

How to use case expression for the below query

我有包含以下信息的数据:

AcctNumber  VisitID   TxnType   TxnJournal  TxnSvcDate  TxnBchDate  TxnNonChgCode  TxnAmount  TxnCount  TxnInsurance  ChgTotal
-------------------------------------------------------------------------------------------------------------------------------
 csc       V123456789  PAY       CASUCL     2/8/2019    2/8/2019    CHECK         -181.22          1            SP     3386.6
 csc       V123456789  PAY       CASUCL     2/9/2019    2/9/2019    CHECK         -175.48          1            SP     3386.6
 csc       V123456789  PAY       CASUCL     2/8/2019    2/8/2019    CHECK         -68.06           1            SP     3386.6

但我需要如下所示的结果,您可以在其中看到所有列都相同,除了以下结果中的费用总额,我希望这些费用仅针对相同的 VisitIDAccountNumber 并剩余填充为零,让我知道我们如何通过查询解决这个问题。

AcctNumber  VisitID   TxnType   TxnJournal  TxnSvcDate  TxnBchDate  TxnNonChgCode  TxnAmount  TxnCount  TxnInsurance  ChgTotal
-------------------------------------------------------------------------------------------------------------------------------
 csc       V123456789  PAY       CASUCL     2/8/2019    2/8/2019    CHECK         -181.22          1            SP    3386.6
 csc       V123456789  PAY       CASUCL     2/9/2019    2/9/2019    CHECK         -175.48          1            SP     0
 csc       V123456789  PAY       CASUCL     2/8/2019    2/8/2019    CHECK         -68.06           1            SP     0

tiny image

在内部查询中,我在 AcctNumber 列上添加了一个 Row_Number 函数。 此函数将 return 行号按 AcctNumber 分组。因此,您将从每个 AcctNumber 的 1 开始。在外部查询中,我添加了一个 Case When 来获取基于 ROw Number 的 ChgTotal。

SELECT 
    AcctNumber, VisitID, TxnType, TxnJournal, TxnSvcDate, TxnBchDate,  
    TxnNonChgCode, TxnAmount, TxnCount, TxnInsurance,  ChgTotal, 
    CASE 
       WHEN RowNumber = 1 THEN ChgTotal ELSE 0 
    END 
FROM
    (SELECT 
         ROW_NUMBER() OVER (PARTITION BY AcctNumber ORDER BY AcctNumber) RowNumber,
         AcctNumber, VisitID, TxnType, TxnJournal, TxnSvcDate, TxnBchDate,  
         TxnNonChgCode, TxnAmount, TxnCount, TxnInsurance, ChgTotal
     FROM 
         YOUR_TABLE_NAME) AS A