接上一贴http://topic.csdn.net/u/20101120/11/9cfc5489-7f94-4be9-89a2-acf781605139.html?seed=774071650&r=70050716#r_70050716已知2列记录FLOOR NUMBER
1 11 ---有 11 个故障在 1 楼
2 27 ---有 27 个故障在 2 楼
3 9 ......
4 19 ......
5 6 以下这些记录同上表述
6 6
7 11
8 16
9 2
10 5
11 3
12 2
13 2
14 1
1 5
16 3
17 1
18 4
19 1
20 13
21 3
22 3
23 4
24 7
25 4
26 1
27 12
28 5
29 4
30 2
31 15
32 1
33 9
34 6
35 8
36 9
谢谢楼上的朋友,执行SQL语句可以得到如下结果,请高手指点
要求是这样显示打印结果(LZ用的是SQL2005版本)1F 2F 3F 4F 5F 6F 7F 8F 9F 10F
14 9 11 18 10 5 24 35 3 1
17 12 16 23 15 6 33 2
19 13 21 25 28 34 4
26 30 22 29 7
32 8
20
27
31
1 11 ---有 11 个故障在 1 楼
2 27 ---有 27 个故障在 2 楼
3 9 ......
4 19 ......
5 6 以下这些记录同上表述
6 6
7 11
8 16
9 2
10 5
11 3
12 2
13 2
14 1
1 5
16 3
17 1
18 4
19 1
20 13
21 3
22 3
23 4
24 7
25 4
26 1
27 12
28 5
29 4
30 2
31 15
32 1
33 9
34 6
35 8
36 9
谢谢楼上的朋友,执行SQL语句可以得到如下结果,请高手指点
要求是这样显示打印结果(LZ用的是SQL2005版本)1F 2F 3F 4F 5F 6F 7F 8F 9F 10F
14 9 11 18 10 5 24 35 3 1
17 12 16 23 15 6 33 2
19 13 21 25 28 34 4
26 30 22 29 7
32 8
20
27
31
create table tb([FLOOR] int,[NUMBER] int)
insert tb
select 1,11 union all
select 2,27 union all
select 3,9 union all
select 4,19 union all
select 5,6 union all
select 6,6 union all
select 7,11 union all
select 8,16 union all
select 9,2 union all
select 10,5 union all
select 11,3 union all
select 12,2 union all
select 13,2 union all
select 14,1 union all
select 15,5 union all
select 16,3 union all
select 17,1 union all
select 18,4 union all
select 19,1 union all
select 20,13 union all
select 21,3 union all
select 22,3 union all
select 23,4 union all
select 24,7 union all
select 25,4 union all
select 26,1 union all
select 27,12 union all
select 28,5 union all
select 29,4 union all
select 30,2 union all
select 31,15 union all
select 32,1 union all
select 33,9 union all
select 34,6 union all
select 35,8 union all
select 36,9
goselect *
from (
select id = row_number() over(partition by number order by floor),*
from (
select number = ltrim(case when number >= 10 then 10 else number end)+'F',floor from tb
) a
) a
pivot (max(floor) for a.number in ([1F],[2F],[3F],[4F],[5F],[6F],[7F],[8F],[9F],[10F])) b/*
id 1F 2F 3F 4F 5F 6F 7F 8F 9F 10F
-------------------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
1 14 9 11 18 10 5 24 35 3 1
2 17 12 16 23 15 6 NULL NULL 33 2
3 19 13 21 25 28 34 NULL NULL 36 4
4 26 30 22 29 NULL NULL NULL NULL NULL 7
5 32 NULL NULL NULL NULL NULL NULL NULL NULL 8
6 NULL NULL NULL NULL NULL NULL NULL NULL NULL 20
7 NULL NULL NULL NULL NULL NULL NULL NULL NULL 27
8 NULL NULL NULL NULL NULL NULL NULL NULL NULL 31(8 行受影响)
*/PS:你们老板最近没有表扬你么
--借楼上数据一用DROP TABLE tb
create table tb([FLOOR] INT,[NUMBER] INT)
insert tb
select 1,11 union all
select 2,27 union all
select 3,9 union all
select 4,19 union all
select 5,6 union all
select 6,6 union all
select 7,11 union all
select 8,16 union all
select 9,2 union all
select 10,5 union all
select 11,3 union all
select 12,2 union all
select 13,2 union all
select 14,1 union all
select 15,5 union all
select 16,3 union all
select 17,1 union all
select 18,4 union all
select 19,1 union all
select 20,13 union all
select 21,3 union all
select 22,3 union all
select 23,4 union all
select 24,7 union all
select 25,4 union all
select 26,1 union all
select 27,12 union all
select 28,5 union all
select 29,4 union all
select 30,2 union all
select 31,15 union all
select 32,1 union all
select 33,9 union all
select 34,6 union all
select 35,8 union all
select 36,9
go
DECLARE @s varchar(8000),@s1 varchar(8000)
SELECT @s=''
SELECT @s=@s+' UNION ALL SELECT [Floor],'+CASE WHEN Number<10 THEN LTRIM(Number) WHEN Number>=10 THEN LTRIM(10) END +'as Number FROM TB WHERE Number='+LTRIM(Number) FROM tb ORDER BY Number
SET @s=STUFF(@S,1,10,'')
EXEC ('SELECT DISTINCT * INTO ## FROM ('+@S+')A')
SELECT @s1=ISNULL(@s1,'')+',MAX(CASE WHEN Number='''+LTRIM(Number)+''' THEN [Floor] ELSE Null END)as ''['+Ltrim(number)+'F]'' '
FROM ## GROUP BY Number
SET @s1='SELECT '+right(@s1,len(@s1))+' FROM ## GROUP BY Floor'
EXEC( @s1)DROP TABLE ##/*[1F] [2F] [3F] [4F] [5F] [6F] [7F] [8F] [9F] [10F]
----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
NULL NULL NULL NULL NULL NULL NULL NULL NULL 1
NULL NULL NULL NULL NULL NULL NULL NULL NULL 2
NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL
NULL NULL NULL NULL NULL NULL NULL NULL NULL 4
NULL NULL NULL NULL NULL 5 NULL NULL NULL NULL
NULL NULL NULL NULL NULL 6 NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL NULL 7
NULL NULL NULL NULL NULL NULL NULL NULL NULL 8
NULL 9 NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL 10 NULL NULL NULL NULL NULL
NULL NULL 11 NULL NULL NULL NULL NULL NULL NULL
NULL 12 NULL NULL NULL NULL NULL NULL NULL NULL
NULL 13 NULL NULL NULL NULL NULL NULL NULL NULL
14 NULL NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL 15 NULL NULL NULL NULL NULL
NULL NULL 16 NULL NULL NULL NULL NULL NULL NULL
17 NULL NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL 18 NULL NULL NULL NULL NULL NULL
19 NULL NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL NULL 20
NULL NULL 21 NULL NULL NULL NULL NULL NULL NULL
NULL NULL 22 NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL 23 NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL 24 NULL NULL NULL
NULL NULL NULL 25 NULL NULL NULL NULL NULL NULL
26 NULL NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL NULL 27
NULL NULL NULL NULL 28 NULL NULL NULL NULL NULL
NULL NULL NULL 29 NULL NULL NULL NULL NULL NULL
NULL 30 NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL NULL 31
32 NULL NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL 33 NULL
NULL NULL NULL NULL NULL 34 NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL 35 NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL 36 NULL警告: 聚合或其它 SET 操作消除了空值。
*/