当前位置: 代码迷 >> Sql Server >> 分组查询语句解决方法
  详细解决方案

分组查询语句解决方法

热度:83   发布时间:2016-04-27 14:23:42.0
分组查询语句
表A
mid mname
11 aa
22 bb
33 cc

表B
aid, aname
1 a
2 b
3 c
4 d
5 e

表C
mid aid value
11 1 v1
11 2 v2
22 2 v3
.....

要得到的结果是:
表A.name, 表B.aname(a), 表B.aname(b), ......(将表B的行比如5行作为列 得到 表C的值 组成一个表)
aa v1 v2 ......

可能我表述的不是很清楚,有点乱,请高手指教

------解决方案--------------------
没说明白还是我没理解?
------解决方案--------------------
SQL code
create table A(id int,[name] varchar(10))insert into Aselect 1 ,'a' union allselect 2 ,'b'gocreate table B(mid int,id int,[value] varchar(10))insert into Bselect 11 ,1 ,'v1' union allselect 11 ,2 ,'v2' union allselect 22 ,1 ,'v3' union allselect 22 ,2 ,'v4'godeclare @sql varchar(8000)set @sql = 'select mid'select @sql = @sql + ',max(case id when '+ltrim(id)+' then [value] else '''' end) as [name('+[name]+')]'from Aselect @sql = @sql + ' from B group by mid'exec(@sql)drop table A,B/***************mid         name(a)    name(b)----------- ---------- ----------11          v1         v222          v3         v4(2 行受影响)
------解决方案--------------------
探讨

我用的是MySQL, 还有两个关联表; 请问:
必须要用存储过程的语句么?

------解决方案--------------------
再写个where
------解决方案--------------------
select 列1, 列2 ,... from where
------解决方案--------------------
我的理解,是说建立一个表C,表C的数据是表B对应数据,以及表B中id对应表A的数据,是么?希望能帮到你
select mid,(select name from 表A join 表B where A.id=B.id ) as namea,name from 表B
  相关解决方案