日期:2014-05-17  浏览次数:20756 次

sql 分组的纳闷
信息表A                   项目表 B
id,                        id,
name,                    A.id,
age,                     项目名称
sex

姓名    年龄    性别    项目1    项目2   项目3
张三      16     男       X1      NULL   NULL
张三      16     男      NULL     X2     NULL
张三      16     男      NULL     NULL   X3

现在查询出来的结果是这种,如果去掉在一行结果中显示出来,不要分成三行。
SQL分组查询

------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (姓名 nvarchar(4),年龄 int,性别 nvarchar(2),项目1 nvarchar(4),项目2 nvarchar(4),项目3 nvarchar(4))
insert into [TB]
select '张三',16,'男','X1',null,null union all
select '张三',16,'男',null,'X2',null union all
select '张三',16,'男',null,null,'X3'



select 姓名,年龄,性别,max(项目1 ) as 项目1  ,max(项目2 ) as 项目2,max(项目3 ) as 项目3
from TB
group by  姓名,年龄,性别

/*
姓名 年龄 性别 项目1 项目2 项目3
张三 16 男 X1 X2 X3*/