繁体   English   中英

减去两行并在Sql Server中保留具有相同ID的最新行

[英]subtract two rows and keep the latest row with the same ID in Sql Server

我有一个选择查询,我需要删除或减去两行,并保持最初的chargeID为同一个patid最初我用在我的where condtion例如

 where transactiontype!=void and transactiontype='charges'.

我需要保留最新的“收费”行。 下面是表格 表名称tranMaster

Try this 

DECLARE @T TABLE
(
    PatId INT,
    ChargeId INT IDENTITY(1,1),
    TranType VARCHAR(20),
    SomeText VARCHAR(20)
)

INSERT INTO @T
(
    PatId,
    TranType,
    SomeText
)
VALUES(598,'Void','Sample 11'),
    (598,'Charges','Sample 12'),
    (598,'Charges','Sample 13'),
    (611,'Void','Sample 21'),
    (611,'Void','Sample 22'),
    (611,'Charges','Sample 23')

;WITH CTE
AS
(
    SELECT
       RN = ROW_NUMBER() OVER(PARTITION BY PatId,TranType ORDER BY ChargeId DESC),
       *
       FROM @T
)
SELECT
    *
    FROM CTE
       WHERE RN = 1

样本输入

在此输入图像描述

样本输出

在此输入图像描述

使用patid分区的排名功能和chargeid DESC的顺序,然后从where子句中过滤掉不必要的记录。

暂无
暂无

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

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