date name status
201705 a 1
201705 b 1
201705 c 0
201706 a 1
201706 b 0
201706 c 1
我按date 和status分组查询后可以得到
date name status
201705 a,b 1
201705 c 0
201706 a,c 1
201706 b 0
我想得到下面的数据,mysql有语句能做到吗?
date name1 name0
201705 a,b c
201706 a,c b
6 个解决方案
#1
最后一步和你自己做的分组一个道理啊。
在你自己分组的基础上,你在group by的基础上,再加个条件status,然后name分成1,2,分别计算,计算得时候也多加一个status条件
在你自己分组的基础上,你在group by的基础上,再加个条件status,然后name分成1,2,分别计算,计算得时候也多加一个status条件
#2
大神,不是很懂,可以把sql语句写给我吗?
麻烦你您了
#3
不知道mysql是否支持 for xml path , 如果不支持, 就要用循环语句
类似下面这样
DECLARE @str varchar(10)
SET @str=''
Select @str=@str+Field From Table Where .....
While .....
Begin
End
类似下面这样
DECLARE @str varchar(10)
SET @str=''
Select @str=@str+Field From Table Where .....
While .....
Begin
End
#4
都得到上面的数据了,再case一下取max之类的就行了啊
#5
if object_id('tempdb..#Tmp_Data') is not null
drop table #Tmp_Data
CREATE TABLE #Tmp_Data (
date int,
name varchar(10),
status int)
INSERT INTO #Tmp_Data
Select 201705,'a,b',1 union
Select 201705,'c',0 union
Select 201706,'a,c',1 union
Select 201706,'b',0
Select date,
max(case when status=1 then name else '' end) as name1,
max(case when status=0 then name else '' end) as name0
From #Tmp_Data
Group By date
#6
十分感谢,谢谢大佬
#1
最后一步和你自己做的分组一个道理啊。
在你自己分组的基础上,你在group by的基础上,再加个条件status,然后name分成1,2,分别计算,计算得时候也多加一个status条件
在你自己分组的基础上,你在group by的基础上,再加个条件status,然后name分成1,2,分别计算,计算得时候也多加一个status条件
#2
大神,不是很懂,可以把sql语句写给我吗?
麻烦你您了
#3
不知道mysql是否支持 for xml path , 如果不支持, 就要用循环语句
类似下面这样
DECLARE @str varchar(10)
SET @str=''
Select @str=@str+Field From Table Where .....
While .....
Begin
End
类似下面这样
DECLARE @str varchar(10)
SET @str=''
Select @str=@str+Field From Table Where .....
While .....
Begin
End
#4
都得到上面的数据了,再case一下取max之类的就行了啊
#5
if object_id('tempdb..#Tmp_Data') is not null
drop table #Tmp_Data
CREATE TABLE #Tmp_Data (
date int,
name varchar(10),
status int)
INSERT INTO #Tmp_Data
Select 201705,'a,b',1 union
Select 201705,'c',0 union
Select 201706,'a,c',1 union
Select 201706,'b',0
Select date,
max(case when status=1 then name else '' end) as name1,
max(case when status=0 then name else '' end) as name0
From #Tmp_Data
Group By date
#6
十分感谢,谢谢大佬