34,588
社区成员
发帖
与我相关
我的任务
分享
select MIN(RTRIM(year)+'.'+MONTH)+CASE WHEN COUNT(1)>1 THEN ' '+MAX(RTRIM(year)+'.'+MONTH) ELSE '' END AS YYMM,code from TB WHERE flag=1 GROUP BY code
/*
YYMM code
2010.01 2013.06 001
2012.09 002
*/
if object_id('TB') is not null drop table TB
create table TB (year int,month varchar(2),flag int,code varchar(3))
insert into TB
select 2010,'01',1,'001' union all
select 2015,'02',0,'001' union all
select 2013,'06',1,'001' union all
select 2012,'09',1,'002' union all
select 2011,'11',0,'002'
select * from TB
;WITH T
AS(
SELECT MIN(CONVERT(VARCHAR,YEAR)+'.'+MONTH) AS minD,MAX(CONVERT(VARCHAR,YEAR)+'.'+MONTH) AS maxD,code
FROM dbo.TB
WHERE flag = 1
GROUP BY Code)
SELECT minD+CASE WHEN minD=maxD THEN '' ELSE '/'+maxD END AS TT ,code
FROM T
/*
2010.01/2013.06 001
2012.09 002*/