zjianhua01
2021-06-28 09:02
采纳率: 50%
浏览 25

sql server 怎么把多行数据按tjbh 整合成一行数据

转换成

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 雨夹雪 2021-06-29 09:17
    已采纳
    CREATE TABLE #T
    (
    	id INT IDENTITY,
    	typ VARCHAR(10),
    	txt VARCHAR(10),
    	val text 
    )
    
    INSERT INTO #T(typ,txt,val) VALUES(1,'a','1'),(1,'b','2'),(1,'c','3'),(1,'d','4'),(1,'e','5'),(1,'f','6')
    INSERT INTO #T(typ,txt,val) VALUES(2,'a','1'),(2,'b','2'),(2,'c','3'),(3,'e','5'),(3,'f','6')
    
     
    --去掉id,在子查询里把类型转换一下
    SELECT *  FROM 
    (
    SELECT typ,txt,CONVERT(VARCHAR(max),val) AS val  FROM #T 
    ) a
    PIVOT
    (
    	max(val) 
    	FOR txt IN (a,b,c,d,e,f)
    )b
    
    DROP TABLE #T
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 404警告 2021-06-28 09:08

    需要考虑一列有多个值的情况吗

    评论
    解决 无用
    打赏 举报
  • 雨夹雪 2021-06-28 16:31

    你这个结果是行列转换来的吧,转换的时候多了一个key字段吧,你在转换前,把多余的字段去掉

    评论
    解决 无用
    打赏 举报
  • 雨夹雪 2021-06-29 08:47
    --例子
    CREATE TABLE #T
    (
    	id INT IDENTITY,
    	typ VARCHAR(10),
    	txt VARCHAR(10),
    	val INT 
    )
    
    INSERT INTO #T(typ,txt,val) VALUES(1,'a',1),(1,'b',2),(1,'c',3),(1,'d',4),(1,'e',5),(1,'f',6)
    INSERT INTO #T(typ,txt,val) VALUES(2,'a',1),(2,'b',2),(2,'c',3),(3,'e',5),(3,'f',6)
    
    --全部
    SELECT *  FROM #T 
    PIVOT
    (
    	SUM(val) 
    	FOR txt IN (a,b,c,d,e,f)
    )b
    
    --去掉id
    SELECT *  FROM 
    (
    SELECT typ,txt,val  FROM #T 
    ) a
    PIVOT
    (
    	SUM(val) 
    	FOR txt IN (a,b,c,d,e,f)
    )b
    
    DROP TABLE #T
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题