按特定条件分组

纳迪姆

我正在努力实现我想要对行进行分组的记录集。

值为 (8202) 的列 TRXCODE 在 TRAMT 列中包含 10% 的值,因此我们必须找到这 10% 的 TRAMT 值,然后我们必须将这 2 列分组。

根据我的图像,我想要一个新列(Groupid)来标记一个数字以标识为一个组。

Groupid 中的数字只是例如这些数字可以是任何数字,但对于 1 组来说是相同的。

在此处输入图片说明

脚本

CREATE TABLE #TempRecords 
    (CODE VARCHAR(20), TRDATE DATE, TRBATCH INT, TRREF VARCHAR(20), TRXCODE INT, TRAMT decimal(8,2)
);

GO

INSERT INTO #TempRecords
 VALUES ('ABMSC31', '2003-01-21', 6957, 'SD21010304', 1753, 31.20),
        ('ABMSC31', '2003-01-21', 6957, 'SD21010304', 8202, 3.12),
        ('ABMSC31', '2003-01-21', 6957, 'SD21010304', 8104, 589.68),
        ('ABMSC31', '2003-01-30', 7024, '0000056246', 8104, -31.20),
        ('ABMSC31', '2003-01-30', 7024, '0000056246', 1753, -589.68),
        ('ABMSC31', '2003-01-30', 7024, '0000056246', 8202, -3.12),
        ('ABMSC31', '2003-01-30', 7024, '0000056246', 8104, 554.60),
        ('ABMSC31', '2003-01-30', 7024, '0000056246', 1753, 32.18),
        ('ABMSC31', '2003-01-30', 7024, '0000056246', 8202, 3.22),
        ('ABMSC31', '2003-03-07', 7301, '0000057577', 1001, 1250.00),
        ('ABMSC31', '2003-03-07', 7301, '0000057577', 1001, 1250.00),
        ('ABMSC31', '2003-03-07', 7301, '0000057577', 1001, 1250.00),
        ('ABMSC31', '2003-09-25', 8737, '0000060259', 1701, 1104.00)

GO

SELECT * FROM #TempRecords
阿杰·古普塔

试试这个:

Declare @tbl table  (CODE VARCHAR(20), TRDATE DATE, TRBATCH INT, TRREF VARCHAR(20), TRXCODE INT, TRAMT decimal(8,2), TRAMT1 decimal(8,2))

Insert into @tbl 
Select *,null FROM #TempRecords

Update @tbl Set TRAMT1 = TRAMT where TRXCODE=8202
Update @tbl Set TRAMT1 = 0.1*TRAMT where TRXCODE<>8202

Select Code, TRDATE,TRBATCH, TRREF,TRXCODE,TRAMT, DENSE_RANK () OVER(ORDER BY TRAMT1) as groupID  from @tbl order by TRAMT1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章