昨天在论坛看一道题的解答有个地方不理解如下:
select *,rid=identity(int,1,1)
into #tb
from tbselect max(case when rid%2=1 then 职位 else '' end) 职位1,
max(case when rid%2=1 then 职位类型 else '' end) 职位类型1,
max(case when rid%2=1 then 职位工作地 else '' end) 职位工作地1,
max(case when rid%2=0 then 职位 else '' end) 职位2,
max(case when rid%2=0 then 职位类型 else '' end) 职位类型2,
max(case when rid%2=0 then 职位工作地 else '' end) 职位工作地2,
max(case when rid%2=0 then 人数 else 0 end) 人数2
from #tb
group by (rid-1)/2drop table #tb
group by(rid-1)/2怎么理解是怎样分组的?
select *,rid=identity(int,1,1)
into #tb
from tbselect max(case when rid%2=1 then 职位 else '' end) 职位1,
max(case when rid%2=1 then 职位类型 else '' end) 职位类型1,
max(case when rid%2=1 then 职位工作地 else '' end) 职位工作地1,
max(case when rid%2=0 then 职位 else '' end) 职位2,
max(case when rid%2=0 then 职位类型 else '' end) 职位类型2,
max(case when rid%2=0 then 职位工作地 else '' end) 职位工作地2,
max(case when rid%2=0 then 人数 else 0 end) 人数2
from #tb
group by (rid-1)/2drop table #tb
group by(rid-1)/2怎么理解是怎样分组的?
1 2 3 4 5 6
rid-1就是
0 1 2 3 4 5
再/2
0 0 1 1 2 2
明白没有,达到两个一组的效果了没
--你这样测试一下!
select 1/2
select 2/2
select 3/2
rid = 1-10
那么(rid-1)/2分别是1 2 3 4 5 6 7 8 9 10
0 0 1 1 2 2 3 3 4 4楼主可以select number,(number-1)/2
from master..spt_values
where type = 'p' and number between 1 and 100看看。
from master..spt_values
where type = 'p' and number between 1 and 40/*
1 0
2 0
3 1
4 1
5 2
6 2
7 3
8 3
9 4
10 4
11 5
12 5
13 6
14 6
15 7
16 7
17 8
18 8
19 9
20 9
21 10
22 10
23 11
24 11
25 12
26 12
27 13
28 13
29 14
30 14
31 15
32 15
33 16
34 16
35 17
36 17
37 18
38 18
39 19
40 19
*/select number,(number-1)/10
from master..spt_values
where type = 'p' and number between 1 and 40/*
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 2
22 2
23 2
24 2
25 2
26 2
27 2
28 2
29 2
30 2
31 3
32 3
33 3
34 3
35 3
36 3
37 3
38 3
39 3
40 3
*/
from master..spt_values where type='p'
and number<10/*
-----------
0
0
1
1
2
2
3
3
4
4
昨天就用笔算出的结果是0 1/2 1 3/2.......一直不明白是什么意思
thx 楼上的各位