【发布时间】:2019-09-07 21:07:43
【问题描述】:
这应该相对容易。我以看索赔数据为生。我有以下假设的 ClaimID:17060C048388A3
关于这个,第14个字符空间中的A代表“调整”,下面的数字是调整的时间数。因此,例如,此特定声明已调整 3 次。 不幸的是 ClaimID 17060C048388A1、17060C048388A2 和 17060C048388A3(所有三个调整都显示)。在计算这些索赔时,我如何只选择最高调整以避免重复。并非所有声明都进行了调整,因此它们并非全都是 A,也不全是 15 个字符。
所以我想我需要如下开始一个case语句:
SELECT DISTINCT TOP 10000 *,
CASE WHEN CLAIMID LIKE '%A%' THEN ??????
如果 ClaimID 中有“A”,则有关获取 ClaimID 中“A”之后的下一个最高数字的任何建议。因此,如果索赔有 8 次调整,我只想查看以 A8 结尾的那一项。
在此先感谢各位, 格雷格
【问题讨论】:
-
您使用的是哪个 dbms(mysql、sql-server、oracle、postgres)?请标记您的问题。
-
Sql_Server 2016 管理工作室
-
如果上面没有说清楚,表示调整的“A”并不总是在第 14 位。
-
你们怎么看这个。查看数据,“A”可能位于第 13 位或第 14 位。这不应该解决问题吗?
`SELECT DISTINCT claimid <br/> CASE WHEN SUBSTRING(CLAIMID, 14, 1) = 'A' Then Max(ClaimID) <br/> WHEN SUBSTRING(CLAIMID, 13, 1) = 'A' Then Max(ClaimID) End as MaxClaimID <br/> FROM PLANREPORT_QNXT_LA.DBO.CLAIM <br/> WHERE CLAIMID LIKE '%A%' <br/> group by claimid
标签: sql sql-server case sql-like sql-server-2016