【发布时间】:2017-11-11 23:15:50
【问题描述】:
我想知道如何在我的结果中查询一个字段的最新迭代。 例如,我编写了一个查询,它会返回这个 ID 列表:
132GBD00
132GBD01
59RTW900
59RTW901
59RTW902
376BH200
376BH201
376BH202
376BH203
5789DD00
我希望查询返回这个结果:
132GBD01
59RTW902
376BH203
5789DD00
请注意,相似的IDs 仅在最后两个字符上有所不同。 00 是原始的,01、02 等随后出现。如果我写这样的查询:
SELECT memid
FROM MEMBERID
WHERE MEMBERID = ???
该表有日期,但我无法搜索不同的 memid 并按 max(date) 过滤,因为有时最新的迭代日期为 NULL。我正在尝试查看是否可以查看 ID 列表并按 ID 中的最后两个字符进行过滤,以查看哪个更大并返回。
【问题讨论】:
-
这表明设计出了问题。您将两个值塞进一个违反 1NF 并且是要处理的严重 PITA 的单个元组中。您可能可以在此处利用 ROW_NUMBER,但您必须按子字符串进行分区。
-
可能的错字:
FROM MEMBERID和WHERE MEMBERID = ???相当奇怪。两个地方都有表名?
标签: sql sql-server tsql filter