none
SQLServer行转成列 RRS feed

  • 问题

  • 执行T-SQL语句:select top(1) XunWR,JiLR
    from dbo.VIS_XingZhZhF_XunWBL
    where LiAShP_ID=233
    order by sysID desc

    得到下面的结果集

    A列   B列

    59706 59707

    我想转换成

    XXX列

    59706
    59707

    请给出T-SQL语句,谢谢

    2010年7月15日 5:58

答案

  • create table #tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
    insert into #tb values('张三' , '语文' , 74)
    insert into #tb values('张三' , '数学' , 83)
    insert into #tb values('张三' , '物理' , 93)
    insert into #tb values('李四' , '语文' , 74)
    insert into #tb values('李四' , '数学' , 84)
    insert into #tb values('李四' , '物理' , 94)
    go
    
    select * from #tb
    
    SELECT * FROM #tb
    PIVOT(sum(分数) FOR 课程 IN (语文, 数学, 物理)) AS A
    

     

    按照这个例子写把,锻炼一下,就不给你写。。。


    family as water
    2010年7月15日 9:07
  • SET NOCOUNT ON ;
    DECLARE @T TABLE(LiAShP_ID INT,XunWR int,JiLR int)
    INSERT @T SELECT 233,59706,59707
    INSERT @T SELECT 234,59708,59709
    
    SELECT
      *
    FROM
      @T
    UNPIVOT
      (ColValue FOR ColName IN(XunWR,JiLR) )a
      
    /*
    LiAShP_ID  ColValue  ColName
    233  59706  XunWR
    233  59707  JiLR
    234  59708  XunWR
    234  59709  JiLR
    */
    
    
    看樓主的數據,應該是列轉行顯示

    ROY WU(吳熹)
    2010年7月15日 9:33
    版主
  • SELECT val 
    FROM (
         SELECT TOP(1) XunWR, JiLR 
         FROM dbo.VIS_XingZhZhF_XunWBL
         WHERE LiAShP_ID = 233
         ORDER BY sysID DESC
       ) a
       UNPIVOT(val FOR col IN (XunWR, JiLR)) b
    

    如果您得到满意的答复,请将正确的回复标记为答案,以示问题解决,方便其他人浏览!Ths!
    2010年7月16日 1:31

全部回复

  • create table #tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
    insert into #tb values('张三' , '语文' , 74)
    insert into #tb values('张三' , '数学' , 83)
    insert into #tb values('张三' , '物理' , 93)
    insert into #tb values('李四' , '语文' , 74)
    insert into #tb values('李四' , '数学' , 84)
    insert into #tb values('李四' , '物理' , 94)
    go
    
    select * from #tb
    
    SELECT * FROM #tb
    PIVOT(sum(分数) FOR 课程 IN (语文, 数学, 物理)) AS A
    

     

    按照这个例子写把,锻炼一下,就不给你写。。。


    family as water
    2010年7月15日 9:07
  • SET NOCOUNT ON ;
    DECLARE @T TABLE(LiAShP_ID INT,XunWR int,JiLR int)
    INSERT @T SELECT 233,59706,59707
    INSERT @T SELECT 234,59708,59709
    
    SELECT
      *
    FROM
      @T
    UNPIVOT
      (ColValue FOR ColName IN(XunWR,JiLR) )a
      
    /*
    LiAShP_ID  ColValue  ColName
    233  59706  XunWR
    233  59707  JiLR
    234  59708  XunWR
    234  59709  JiLR
    */
    
    
    看樓主的數據,應該是列轉行顯示

    ROY WU(吳熹)
    2010年7月15日 9:33
    版主
  • SELECT val 
    FROM (
         SELECT TOP(1) XunWR, JiLR 
         FROM dbo.VIS_XingZhZhF_XunWBL
         WHERE LiAShP_ID = 233
         ORDER BY sysID DESC
       ) a
       UNPIVOT(val FOR col IN (XunWR, JiLR)) b
    

    如果您得到满意的答复,请将正确的回复标记为答案,以示问题解决,方便其他人浏览!Ths!
    2010年7月16日 1:31