我有一个ID列表如下所示。
AT0920130004
AT0920130005
AT0920130006
AT0920130007
AT0920130008
AT0920130009
AT0920130010
AT1020130001
AT1020130002
AT1020130003
AT1020130004
AT1020130005
AT1120130003
AT1120130004
AT1120130005
AT1120130006
此处示例记录的格式为ATmmyyyyxxxx
。
其中
AT
代表location
,
mm
代表month
,例如10代表October
yyyy
代表year
例如。 2013
xxxx
代表increasing seed of numbers
。
现在我需要选择end of the month
中生成的ID。
例如:9月的最后一个ID,即AT0920130010。
任何建议都表示赞赏。
答案 0 :(得分:3)
您可以使用此查询获取每个月和每年的最大ID
select substring([id], 3, 6) MonthYear, max([id]) MaxID
from yourtable
group by substring([id], 3, 6)
要获取特定月份的最大ID,您可以使用此查询:
select max([id])
from yourtable
where cast(substring([id], 5, 4) as int) = 2013 -- year
and cast(substring([id], 3, 2) as int) = 9 -- month
答案 1 :(得分:2)
试试这个:
select MAX(t.ID) from TableName t
group by SUBSTRING(t.ID, 3, 2)
答案 2 :(得分:0)
您基本上希望获得与位置,月份和年份匹配的最大ID。这样的事情应该这样做:
SELECT max(id)
FROM myTable
WHERE substring(id, 0, 2) = [location]
AND susbstring(id, 2, 2) = [month]
AND substring(id, 4, 4) = [year]
答案 3 :(得分:0)
试试这个(这将返回整个字段,只是id):
SELECT YOUR_FIELD, MAX(RIGHT(YOUR_FIELD,4)) AS just_id FROM YOUR_TABLE WHERE RIGHT(YOUR_FIELD,LENGTH(YOUR_FIELD)-2) LIKE '09%'