GROUP BY 用法表:楼层 房号一楼 101一楼 102一楼 105二楼 201二楼 202二楼 205请问如何使用 GROUP BY 语句得到如下结果:楼层 房号1,房号2,房号3一楼 101,102,105二楼 201,202,205注:每一个楼层不一定是3
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 04:55:44
GROUP BY 用法表:楼层 房号一楼 101一楼 102一楼 105二楼 201二楼 202二楼 205请问如何使用 GROUP BY 语句得到如下结果:楼层 房号1,房号2,房号3一楼 101,102,105二楼 201,202,205注:每一个楼层不一定是3
GROUP BY 用法
表:
楼层 房号
一楼 101
一楼 102
一楼 105
二楼 201
二楼 202
二楼 205
请问如何使用 GROUP BY 语句得到如下结果:
楼层 房号1,房号2,房号3
一楼 101,102,105
二楼 201,202,205
注:每一个楼层不一定是3个房间
101,102,105 这个的顺序不能乱,要升序排列
GROUP BY 用法表:楼层 房号一楼 101一楼 102一楼 105二楼 201二楼 202二楼 205请问如何使用 GROUP BY 语句得到如下结果:楼层 房号1,房号2,房号3一楼 101,102,105二楼 201,202,205注:每一个楼层不一定是3
先把最多的记录的房间取出来,再行转列
Access时,参照
http://zhidao.baidu.com/question/158219080.html
以SQL Server为例,Oracle时用静态就行了
use Tempdb
go
--> -->
if not object_id(N'Tempdb..#') is null
drop table #
Go
Create table #([楼层] nvarchar(2),[房号] int)
Insert #
select N'一楼',101 union all
select N'一楼',102 union all
select N'一楼',105 union all
select N'二楼',201 union all
select N'二楼',202 union all
select N'二楼',205
Go
DECLARE @s NVARCHAR(2000),@i NVARCHAR(2)
SET @s=''
Select TOP 1 @i=COUNT(*) from # GROUP BY 楼层 ORDER BY COUNT(*) desc
WHILE @i>0
SELECT @s=N',max(case when con='+@i+N' then [房号] end) as 房间'+@i+@s,@i=@i-1
EXEC('SELECT [楼层]'+@s+' FROM (SELECT con=(SELECT COUNT(1) FROM # WHERE 楼层=a.楼层 AND [房号]