sql-server身份证号码取年龄段

求救 才入职不久 领导要去用身份证号码统计年龄段
身份证字段 zjhm
表名 jl
谢谢

declare @jl table(zjhm varchar(50))
  insert into @jl(zjhm)
  select '000000199412080000'
  union all
  select '000000199412080000'
  union all
  select '000000199312080000'
  union all
  select '000000199312080000'

  select YEAR(GETDATE())-CONVERT(int, substring(zjhm,7,4)) 年龄,COUNT(1) 人数 from @jl
  group by YEAR(GETDATE())-CONVERT(int, substring(zjhm,7,4))
年龄  人数
25      2
26      2

--1、SUBSTRING()方法---
-- substring()函数说明---
--1)语法:SUBSTRING(character,start,length)

--2)介绍:参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度
--3)使用:
--返回从字符串中间的字符--
select SUBSTRING('SqlServer_2008',4,6)

select substring(zjhm,7,8) from jl

WITH jl AS (
SELECT '000000198901010000' jzhm
UNION ALL
SELECT '000000199001010000'
UNION ALL
SELECT '000000199001010000'
UNION ALL
SELECT '000000199101010000'
  )

 SELECT 
 SUBSTRING(jzhm,7,4) 出生年份,
 DATEDIFF(yy,CONVERT(DATETIME ,SUBSTRING(jzhm,7,8),120),CONVERT(DATETIME,GETDATE(),120)) AS '年龄',
 COUNT(1) AS '人数'
 FROM jl
 GROUP BY SUBSTRING(jzhm,7,4),DATEDIFF(yy,CONVERT(DATETIME ,SUBSTRING(jzhm,7,8),120),CONVERT(DATETIME,GETDATE(),120))

图片说明