乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      行列轉(zhuǎn)換 交叉表

       qzg589 2005-09-09

      行列轉(zhuǎn)換 交叉表

      [日期:2005-07-08] 來源:CSDN  作者: [字體: ]

      總結(jié)了一些有代表性的貼子,具體見http://expert.csdn.net/Expert/topic/2440/2440306.xml?temp=.6941645

      1: 列轉(zhuǎn)為行:
      eg1:
      Create table test (name char(10),km char(10),cj int)
      go
      insert test values(‘張三‘,‘語文‘,80)
      insert test values(‘張三‘,‘?dāng)?shù)學(xué)‘,86)
      insert test values(‘張三‘,‘英語‘,75)
      insert test values(‘李四‘,‘語文‘,78)
      insert test values(‘李四‘,‘?dāng)?shù)學(xué)‘,85)
      insert test values(‘李四‘,‘英語‘,78)

      想變成

      姓名   語文   數(shù)學(xué)   英語
      張三   80     86     75
      李四   78     85     78


      declare @sql varchar(8000)
      set @sql = ‘select name‘
      select @sql = @sql + ‘,sum(case km when ‘‘‘+km+‘‘‘ then cj end) [‘+km+‘]‘
       from (select distinct km from test) as a
      select @sql = @sql+‘ from test group by name‘
      exec(@sql)

      drop table test

       

      eg2:
      有表A,
       id pid
       1   1
       1   2
       1   3
       2   1
       2   2
       3   1
      如何化成表B:
       id pid
        1  1,2,3
        2  1,2
        3  1
      或者是從表B變成A(不要用游標(biāo))
      以前有相似的列子,現(xiàn)在找不到了,幫幫忙!


      --1.創(chuàng)建一個合并的函數(shù)
      create function fmerg(@id int)
      returns varchar(8000)
      as
      begin
      declare @str varchar(8000)
      set @str=‘‘
      select @str=@str+‘,‘+cast(pid as varchar) from 表A where id=@id
      set @str=right(@str,len(@str)-1)
      return(@str)
      End
      go

      --調(diào)用自定義函數(shù)得到結(jié)果
      select distinct id,dbo.fmerg(id) from 表A

      2:
      /***********     行轉(zhuǎn)列   *****************/
      測試:
      create table t1 (a int,b int,c int,d int,e int,f int,g int,h int)
      insert t1 values(15, 9, 1, 0, 1, 2, 2, 0)

      declare @ varchar(8000)
      set @=‘‘
      select @=@+rtrim(name)+‘ from t1 union all select ‘ from syscolumns where id=object_id(‘t1‘)
      set @=left(@,len(@)-len(‘ from t1 union all select ‘))
      --print @
      exec(‘select ‘+@+‘ from t1‘)

      a          
      -----------
      15
      9
      1
      0
      1
      2
      2
      0

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多