昨天在论坛看一道题的解答有个地方不理解如下:
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.   

    一个等差数列
    1 2 3 4 5 6
    rid-1就是
    0 1 2 3 4 5
    再/2
    0 0 1 1 2 2
    明白没有,达到两个一组的效果了没
      

  2.   


    --你这样测试一下!
    select 1/2
    select 2/2
    select 3/2
      

  3.   

    楼上说错!
    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看看。
      

  4.   

    select number,(number-1)/2
    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
    */
      

  5.   

    select number/2
    from master..spt_values where type='p'
    and number<10/*
    -----------
    0
    0
    1
    1
    2
    2
    3
    3
    4
    4
      

  6.   

    哦~得出的结果是取整数,所以得出的结果是00112233.?
    昨天就用笔算出的结果是0 1/2 1 3/2.......一直不明白是什么意思
    thx 楼上的各位