none
sql 列转行 RRS feed

  • 问题

  • ID    NAME     SJ1       SJ2     SJ3     SJ4

    1      AAA     12:10  13:01  11:10  12:20

    转换为:

    ID    NAME  SJ

    1      AAA  12:10 

    1      AAA  13:01 

    1      AAA  11:10 

    1      AAA  12:20

    请各位高手指教,谢谢!!!

    2011年8月3日 2:31

答案

  • use tempdb
    go
    
    Create table yourTable
    (
     id int ,
     name varchar(50) ,
     sj1 time,
     sj2 time,
     sj3 time,
     sj4 time
    
    )
    Go
    Insert into yourTable values ('1','AAA','12:10','13:01','11:10','12:20')
    Go
    Select id,name,Convert(varchar,sj1,108) As sj1,Convert(varchar,sj2,108) As sj2,Convert(varchar,sj3,108) As sj3,Convert(varchar,sj4,108) As sj4 from yourTable
    Go
    
    SELECT id,name,Convert(varchar,SJ,108) AS SJ
    FROM yourTable
    UNPIVOT
    (SJ FOR SUBJECT IN
     (SJ1,SJ2,SJ3,SJ4)
     ) t
    
    
    

     


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年8月3日 9:20

全部回复

  • 如果你的SQL SERVER是2005以上,可以透過UNPOVIT來做轉換,參考網址如下:

    http://technet.microsoft.com/zh-tw/library/ms177410.aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月3日 2:35
  • SELECT [ID]
          ,[NAME]
          ,[SJ1]
          ,[SJ2]
          ,[SJ3]
          ,[SJ4]
      FROM table_name
    GO


    SELECT ID,NAME,SJ
    FROM table_name

    UNPIVOT
    (SJ FOR SUBJECT IN
     (SJ1,SJ2,SJ3,SJ4)
     ) AS Newtable_name

    • 已建议为答案 yaphets 2011年8月3日 5:31
    • 取消建议作为答案 yaphets 2011年8月3日 6:49
    • 已建议为答案 Shadow .Net 2011年8月3日 9:36
    2011年8月3日 5:29
  • use tempdb
    go
    
    Create table yourTable
    (
     id int ,
     name varchar(50) ,
     sj1 time,
     sj2 time,
     sj3 time,
     sj4 time
    
    )
    Go
    Insert into yourTable values ('1','AAA','12:10','13:01','11:10','12:20')
    Go
    Select id,name,Convert(varchar,sj1,108) As sj1,Convert(varchar,sj2,108) As sj2,Convert(varchar,sj3,108) As sj3,Convert(varchar,sj4,108) As sj4 from yourTable
    Go
    
    SELECT id,name,Convert(varchar,SJ,108) AS SJ
    FROM yourTable
    UNPIVOT
    (SJ FOR SUBJECT IN
     (SJ1,SJ2,SJ3,SJ4)
     ) t
    
    
    

     


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年8月3日 9:20
  • 谢谢各位高手!!!
    2011年8月4日 0:20