表 t1 中 列 abc  cba
   100  aaa
   101  bbb
   555  ccc
   777  aaa
   .
   .
   .
   .要求生成的表 列   abc   cba  mmm
      ×    ×   1
      ×    ×   1
      ×    ×   1
      ×    ×   2
      ×    ×   2
      ×    ×   2 
      ×    ×   3
      ×    ×   3  
      .
      .
      .
      .
      .   abc 和 cba 内容不变  mmm 每3个加一

解决方案 »

  1.   

    trySelect *, (Select Count(*) From t1 Where abc < A.abc) / 3 + 1 As mmm From t1 A
      

  2.   

    Create Table t1
    (abc Int,
     cba Varchar(10))
    Insert t1 Select    100,  'aaa'
    Union All Select   101,  'bbb'
    Union All Select   555,  'ccc'
    Union All Select   777,  'ddd'
    Union All Select   778,  'eee'
    Union All Select   787,  'fff'
    Union All Select   888,  'ggg'
    GO
    Select *, (Select Count(*) From t1 Where abc < A.abc) / 3 + 1 As mmm From t1 A
    GO
    Drop Table t1
    --Result
    /*
    abc cba mmm
    100 aaa 1
    101 bbb 1
    555 ccc 1
    777 ddd 2
    778 eee 2
    787 fff 2
    888 ggg 3
    */
      

  3.   

    select id=identity(int,1,1) ,* into #t from t1select *,(id-1)/3+1 from #t
      

  4.   

    create table temp0614(abc varchar(5),cba varchar(5))
    insert temp0614 select 'ay','jk'
    union all select 'sw','jm'
    union all select 'xx','ef'
    union all select 'xs','qa'
    union all select 'tt','ws'
    union all select 'hj','ed'
    union all select 'kl','rf'
    union all select 'op','tg'
    union all select 'gf','yh'
    union all select 'dr','ik'
    union all select 'ef','ok'
    union all select 'rt','yu'select * from temp0614
    alter table temp0614 add idencol int identity(1,1)
    alter table temp0614 add mm intupdate temp0614 set mm=(idencol+2)/3alter table temp0614 drop column idencolselect * from temp0614drop table temp0614
      

  5.   

    null null
    数学 三.3
    数学 三.1
    null null
    null null
    科学 三.3
    null null
    null null
    null null
    null null
    数学 三.1
    数学 三.3
    null null
    null null
    null null
    科学 三.3
    null null
    null null
    null null
    null null
    null null
    数学 三.3
    数学 三.1
    null null
    null null
    科学 三.1
    null null
    null null
    null null
    null null
    数学 三.3
    null null
    数学 三.1
    体健 三.3
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    数学 三.1
    数学 三.3
    null null
    null null
    科学 三.1
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    null null
    结束  
    空也是数据  一共60条 ,我想把它变成课程表    周一          周二       周三    周四       周五    周六 
    1   null null      
    2   数学 三.3                                          
    3   数学 三.1                                          
    4   null null
    5   null null
    6   科学 三.3
    7   null null
    8   null null
    9   null null
    10  null null将这个表填满
      

  6.   

    try:CREATE TABLE #T1(abc int,cba nvarchar(20))
    INSERT INTO #T1
    SELECT 101,'A' UNION ALL
    SELECT 102,'B' UNION ALL
    SELECT 104,'we' UNION ALL
    SELECT 101,'tye' UNION ALL
    SELECT 201,'we' UNION ALL
    SELECT 201,'3e' UNION ALL
    SELECT 241,'3e' UNION ALL
    SELECT 251,'sfe' UNION ALL
    SELECT 271,'we' UNION ALL
    SELECT 328,'DD' SELECT IDENTITY(int, 3,1) [id],*,CAST(NULL AS int) mmm INTO  #T2 FROM #T1
    UPDATE #T2 SET mmm=[id]/3
    SELECT * FROM #T2
    DROP TABLE  #T1,#T2
      

  7.   

    create table #test(xm varchar(10),lx varchar(10))
    insert #test select 'aaa','A'
    union all select 'bbb','C'
    union all select 'ccc','C'
    union all select 'aaa','C'
    union all select 'bbb','C'
    union all select 'ccc','C'
    union all select 'aaa','C'
    union all select 'bbb','C'
    union all select 'ccc','C'SELECT *,Identity(Int,1,1) As RowIndex INTO #TEST1 FROM #TEST
    SELECT XM,LX,(ROWINDEX-1)/3+1 FROM #TEST1
      

  8.   

    Select abc,cba, 
    (Select Count(*) From t1 Where abc < A.abc) / 10 + 1 As mmm 
    (Select Count(*) From t1 Where abc < A.abc) / 6+ 1 As ddd
    into #t
    From t1 A
    declare @sql varchar(8000)
    set @sql = 'select mmm ,'
    select @sql = @sql + 'max(case [ddd] when '''+ddd+''' 
    then abc+cba end) as '''+ddd+''','
    from (select distinct mmm from #t) as a
    select @sql = left(@sql,len(@sql)-1) + ' from #t group by mmm '
    exec(@sql)
      

  9.   

    问题补充  :
    其实 我现在的数据是这样的:
    开始:

    数学 三.3
    数学 三.1


    科学 三.3

    -----------------------------
    思想,换成交叉表.
    null null   1   1
    数学 三.3   1   1
    数学 三.1   1   1
    null null   1   1
    null null   1   1
    科学 三.3   1   1
    null null   1   2
    null null   1   2
    null null   1   2
    null null   2   2
    数学 三.1   2   2
    数学 三.3   2   2
    null null   2   3
    null null   2   3
    null null   2   3
    科学 三.3   2   3
    null null   2   3
    null null   2   3
    null null   2   4
    null null   3
    null null   3
    数学 三.3   3
    数学 三.1   3
    null null   3
      

  10.   

    樓主,原來的數據是60行 * 2列,有120個數據,怎麼填充到10行 * 6列的表格裡?假設只取這60行數據的第一列來填充。Create Table TEST
    (A Nvarchar(20),
     B Nvarchar(20))
    Insert TEST Select null, null
    Union All Select N'数学', '三.3'
    Union All Select N'数学', '三.1'
    Union All Select null, null
    Union All Select null, null
    Union All Select N'科学', '三.3'
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select N'数学', '三.1'
    Union All Select N'数学', '三.3'
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select N'科学', '三.3'
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select N'数学', '三.3'
    Union All Select N'数学', '三.1'
    Union All Select null, null
    Union All Select null, null
    Union All Select N'科学', '三.1'
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select N'数学', '三.3'
    Union All Select null, null
    Union All Select N'数学', '三.1'
    Union All Select N'体健', '三.3'
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select N'数学', '三.1'
    Union All Select N'数学', '三.3'
    Union All Select null, null
    Union All Select null, null
    Union All Select N'科学', '三.1'
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    Union All Select null, null
    GO
    --Select * From TESTSelect ID = Identity(Int, 0, 1), * Into #T From TESTSelect 
    MAX(Case When ID / 10 = 0 Then A Else null End) As 周一,
    MAX(Case When ID / 10 = 1 Then A Else null End) As 周二,
    MAX(Case When ID / 10 = 2 Then A Else null End) As 周三,
    MAX(Case When ID / 10 = 3 Then A Else null End) As 周四,
    MAX(Case When ID / 10 = 4 Then A Else null End) As 周五,
    MAX(Case When ID / 10 = 5 Then A Else null End) As 周六
    From
    #T
    Group By ID % 10
    GO                                 
    Drop Table #TDrop Table TEST
    GO
    --Result
    /*
    周一 周二 周三 周四 周五 周六
    NULL 数学 NULL 数学 NULL NULL
    数学 数学 数学 NULL 数学 NULL
    数学 NULL 数学 数学 数学 NULL
    NULL NULL NULL 体健 NULL NULL
    NULL NULL NULL NULL NULL NULL
    科学 科学 科学 NULL 科学 NULL
    NULL NULL NULL NULL NULL NULL
    NULL NULL NULL NULL NULL NULL
    NULL NULL NULL NULL NULL NULL
    NULL NULL NULL NULL NULL NULL
    */