选择月份的MAX ID

时间:2013-12-07 06:39:07

标签: sql-server-2008

我有一个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。 任何建议都表示赞赏。

4 个答案:

答案 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%'