sql-server - 按特定条件分组
问题描述
我正在努力实现我想要对行进行分组的记录集。
具有值 (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
推荐阅读
- cordova - HMS Cordova HMS 地图视图阻止了所有剩余的 UI
- amazon-web-services - AWS Aurora 无服务器 mysql、Cognito、Lambda、API 网关、CloudFormation 启动器
- mysql - 文件 cloud-sql-proxy.service:参数无效 - Google 云
- c++ - 错误:调用不匹配 (std::string{aka std::basic_string
})(const char[5])' - spring - 如果任何微服务出现故障,则获得警报
- javascript - 带有 JSON 的 jQuery 中的 if 语句
- bash - 重定向时不需要打开文件描述符?
- python - 如何循环获取名为 vlist 的列表?
- javascript - 如何将包含对象、数组的参数发送到 Rails api,以便对其进行解析?
- python - 如何在 Spark 中读取分区数据?