请教一个SQL语句

siaosa 2015-04-03 09:50:04
有数据
year month flag code
2010 01 1 001
2015 02 0 001
2013 06 1 001
2012 09 1 002
2011 11 0 002

想通过一个SQL语句,返回两列,一列是合并year month这个字段的内容,并按code分组,flag为真时才合并
查询的结果如下
2010.01 2013.06 001
2012.09 002

这样的SQL语句应该怎么写呀?
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2015-04-03
  • 打赏
  • 举报
回复
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
*/
siaosa 2015-04-03
  • 打赏
  • 举报
回复
能改成一个SQL语句吗? 谢谢了
Mr_Nice 2015-04-03
  • 打赏
  • 举报
回复
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*/

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧